In [ ]:
. ../../polyglot/scripts/nbs_header.ps1
. ../../polyglot/scripts/core.ps1
In [ ]:
{ pwsh build.ps1 } | Invoke-Block
polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\apps\compiler / ResolvedLocation: C:\home\git\spiral\apps\compiler polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\compiler/spiral_compiler.dib", "--working-directory", "C:\home\git\polyglot\lib\fsharp"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib", "--output-path", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/compiler/spiral_compiler.dib" --output-path "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot\lib\fsharp", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral_compiler (Polyglot) > > ── spiral ────────────────────────────────────────────────────────────────────── > open rust.rust_operators > open rust > open sm'_operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## spiral_compiler > > ── fsharp ────────────────────────────────────────────────────────────────────── > open FSharp.Core > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language > 2/Supervisor.fs' > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > 2.0/FSharpx.Collections.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #if !INTERACTIVE > // open Polyglot > open Common > // open Lib > // #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PersistentVector > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language > 2/PersistentVectorExtensions.fs' > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #if !INTERACTIVE > // open Polyglot > // open Common > // open Lib > // #endif > // open System > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### private > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_checks from near_to vec = > if from <= near_to = false then > Common.trace Common.Critical (fun () -> > $"PersistentVectorExtensions.range_checks / `from` must be less or equal to > `near_to`. / from: {from} / near_to: {near_to} / vec: {vec}") Common._locals > // raise (System.ArgumentException("`from` must be less or equal to > `near_to`.")) > if from < 0 then raise (System.ArgumentException("`from` must not be > negative.")) > if FSharpx.Collections.PersistentVector.length vec < near_to then raise > (System.ArgumentException("`near_to` must not be beyond the length of the > vector.")) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n+m). Replace the specified range in a vector with the sequence. > let replace from near_to seq vec = > range_checks from near_to vec > let rec rest s = > if from < FSharpx.Collections.PersistentVector.length s then > FSharpx.Collections.PersistentVector.unconj s |> fst |> rest > else > Seq.fold (fun s x -> FSharpx.Collections.PersistentVector.conj x s) > s seq > let rec init s = > if near_to < FSharpx.Collections.PersistentVector.length s then > let s',x = FSharpx.Collections.PersistentVector.unconj s > FSharpx.Collections.PersistentVector.conj x (init s') > else > rest s > init vec > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### mapi > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Returns a vector of the supplied length using the supplied function > operating on the index. > let mapi f vec = FSharpx.Collections.PersistentVector.init > (FSharpx.Collections.PersistentVector.length vec) (fun i -> f i vec.[[i]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### iter > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Iterates over a vector using the supplied function operating on the > index. > let iter f vec = > let rec loop i = if i < FSharpx.Collections.PersistentVector.length vec then > f vec.[[i]] > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unzip > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Unzips a vector of pairs into pairs of vectors. > let unzip vec = > let mutable a = FSharpx.Collections.PersistentVector.empty > let mutable b = FSharpx.Collections.PersistentVector.empty > iter (fun (a',b') -> a <- FSharpx.Collections.PersistentVector.conj a' a; b > <- FSharpx.Collections.PersistentVector.conj b' b) vec > a,b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### concat > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Concatenates a vector of vectors. > let concat vec = FSharpx.Collections.PersistentVector.fold > (FSharpx.Collections.PersistentVector.append) > FSharpx.Collections.PersistentVector.empty vec > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangePersistentVector > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(near_to-from). Get the vector at a range. > let rangePersistentVector from near_to vec = > range_checks from near_to vec > FSharpx.Collections.PersistentVector.init (near_to-from) (fun i -> > vec.[[i+from]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tryFindBack > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(~n). Returns the last element for which a given function returns true. > None if such an element does not exist. > let tryFindBack f vec = > let rec loop i = > if 0 <= i then > let x = FSharpx.Collections.PersistentVector.nth i vec > if f x then Some x else loop (i-1) > else > None > loop (FSharpx.Collections.PersistentVector.length vec - 1) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## HashConsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Adapted from: https://github.com/backtracking/ocaml-hashcons > // Type-Safe Modular Hash-Consing: > https://www.lri.fr/~filliatr/ftp/publis/hash-consing2.pdf > > // open System > open System.Runtime.InteropServices > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConsedNode<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<CustomComparison;CustomEquality;StructuredFormatDisplay("{AsString}")>]] > type ConsedNode<'a> = > { > node: 'a > tag: int > hkey: int > } > > override x.ToString() = sprintf "<tag %i>" x.tag > member x.AsString = x.ToString() > override x.GetHashCode() = x.hkey > override x.Equals(y) = > match y with > | :? ConsedNode<'a> as y -> x.tag = y.tag > | _ -> false > > interface System.IComparable with > member x.CompareTo(y) = > match y with > | :? ConsedNode<'a> as y -> compare x.tag y.tag > | _ -> raise <| System.ArgumentException "Invalid comparison for > HashConsed." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HashConsTable > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HashConsTable() = > let mutable table: ResizeArray<GCHandle> [[]] = Array.init 7 (fun _ -> > ResizeArray(0)) > let mutable total_size: int = 0 > let mutable limit: int = 3 > let mutable is_finalized: bool = false > let mutable counter: int = 0 > > member private t.Resize() = > let next_table_length x = x*3/2+3 > > let table_length' = next_table_length table.Length > if table_length' <= table.Length then failwith "The hash consing table > cannot be grown anymore." > let table' = Array.init table_length' (fun i -> ResizeArray()) > let limit' = limit+2 > let total_size' = > let mutable total_size=0 > for i=0 to table.Length-1 do > let table = table.[[i]] > for i=0 to table.Count-1 do > let x = table.[[i]] > total_size <- > match x.Target with > | null -> > x.Free() > total_size > | a -> > let bucket = table'.[[(hash a &&& > System.Int32.MaxValue) % table_length']] > bucket.Add x > total_size+1 > total_size > table <- table' > limit <- limit' > total_size <- total_size' > > member t.Add(x: 'a): ConsedNode<'a> = > let hkey = hash x > let table = table > let bucket = table.[[(hkey &&& System.Int32.MaxValue) % Array.length > table]] > let sz = bucket.Count > > let rec loop empty_pos i = > if i < sz then > match bucket.[[i]].Target with > | null -> loop i (i+1) > | :? ConsedNode<'a> as y when hkey = y.hkey && x = y.node -> y > | _ -> loop empty_pos (i+1) > else > let node = {node=x; hkey=hkey; tag=counter} > counter <- counter+1 > if empty_pos <> -1 then > let mutable m = bucket.[[empty_pos]] > m.Target <- node > else > bucket.Add (GCHandle.Alloc(node,GCHandleType.Weak)) > total_size <- total_size+1 > if total_size > limit * Array.length table then t.Resize() > node > > loop -1 0 // `-1` indicates the state of no empty bucket > > override __.Finalize() = > if is_finalized = false then > table |> (Array.iter << Seq.iter) (fun x -> x.Free()) > is_finalized <- true > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Startup > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Argu > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrimitiveType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrimitiveType = > | UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T > | Float32T | Float64T > | BoolT | StringT | CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### DefaultEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type DefaultEnv = { > port : int > default_int : PrimitiveType > default_uint : PrimitiveType > default_float : PrimitiveType > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CliArguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CliArguments = > | [[<Mandatory;Unique>]] Port of int > | [[<Unique>]] Default_Int of string > | [[<Unique>]] Default_Float of string > > interface IArgParserTemplate with > member s.Usage = > match s with > | Port _ -> "specify a primary port." > | Default_Int _ -> "specify the default int: i8, i16, i32, i64, u8, > u16, u32, u64" > | Default_Float _ -> "specify the default float: f32, f64" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parseStartup > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parseStartup args = > let parser = ArgumentParser.Create<CliArguments>(programName = "spiral.exe") > let results = parser.ParseCommandLine(args) > let int = > match results.GetResult(Default_Int,"i32") with > | "i8" -> Int8T > | "i16" -> Int16T > | "i32" -> Int32T > | "i64" -> Int64T > | "u8" -> UInt8T > | "u16" -> UInt16T > | "u32" -> UInt32T > | "u64" -> UInt64T > | x -> failwith $"Invalid default int.\nGot: %s{x}\nExpected one of: i8, > i16, i32, i64, u8, u16, u32, u64" > > let uint = > match int with > | Int8T -> UInt8T > | Int16T -> UInt16T > | Int32T -> UInt32T > | Int64T -> UInt64T > | x -> x // If the int is unsigned then make them the same type. > { > port = results.GetResult(Port) > default_int = int > default_uint = uint > default_float = > match results.GetResult(Default_Float,"f64") with > | "f32" -> Float32T > | "f64" -> Float64T > | x -> failwith $"Invalid default float.\nGot: %s{x}\nExpected one of: > f32, f64" > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Utils > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Collections.Generic > open System.Runtime.CompilerServices > // open Common > #if !INTERACTIVE > open Lib > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### list_try_zip > > ── fsharp ────────────────────────────────────────────────────────────────────── > let list_try_zip a b = > try Some (List.zip a b) with _ -> None > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_default > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline get_default (memo_dict: Dictionary<_,_>) k def = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> def() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### memoize' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline memoize' (memo_dict: ConditionalWeakTable<_,_>) f k = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> let v = f k in memo_dict.Add(k,v); v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### memoize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline memoize (memo_dict: Dictionary<_,_>) f k = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> let v = f k in memo_dict.Add(k,v); v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lines > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lines (str : string) = > str.Split([[|"\r\n";"\r";"\n"|]],System.StringSplitOptions.None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline remove (dict : Dictionary<_,_>) x on_succ on_fail = > let mutable q = Unchecked.defaultof<_> > if dict.Remove(x, &q) then on_succ q else on_fail () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_uri > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_uri (x : string) = > let result = x |> SpiralFileSystem.standardize_path |> > SpiralFileSystem.new_file_uri > trace Verbose (fun () -> $"Utils.file_uri / x: {x} / result: {result}") > _locals > result > > ── fsharp ────────────────────────────────────────────────────────────────────── > //open Hopac > //open Hopac.Infixes > //open Hopac.Extensions > //open Hopac.Stream > > //let print_ch = Ch<string>() > //let pr x = Hopac.run (Ch.send print_ch (x.ToString())) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## ParserCombinators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline index d = (^a : (member Index: ^b) d) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index_set > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline index_set i d = > (^a : (member set_Index: ^b -> unit) (d,i)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (.>>.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>.) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok (a,b) > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple3 a b c d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> Ok (a, b, c) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple4 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple4 a b c d' d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> Ok (a, b, c, d') > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple5 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple5 a b c d' e d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> Ok (a, b, c, d', e) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple6 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple6 a b c d' e f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> > match f d with > | Ok f -> Ok (a, b, c, d', e, f) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple7 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple7 a b c d' e f g d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> > match f d with > | Ok f -> > match g d with > | Ok g -> Ok (a, b, c, d', e, f, g) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe2 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe2 a b f d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok (f a b) > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe3 a b c f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> Ok (f a b c) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe4 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe4 a b c d' f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> Ok (f a b c d') > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe5 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe5 a b c d' e f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> Ok (f a b c d' e) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (.>>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok a > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok b > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### opt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt a d = > let s = index d > match a d with > | Ok a -> Ok(Some a) > | Error x -> > if s = index d then Ok(None) > else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### optional > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline optional a d = > let s = index d > match a d with > | Ok a -> Ok() > | Error x -> > if s = index d then Ok() > else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|>>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) a b d = > match a d with > | Ok a -> Ok(b a) > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>%) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) a b d = > match a d with > | Ok a -> Ok(b) > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>=) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) a b d = > match a d with > | Ok a -> b a d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>=?) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=?) a b d = > let i = index d > match a d with > | Ok a -> > let i' = index d > match b a d with > | Ok _ as x -> x > | Error _ as x -> (if i' = index d then index_set i d); x // Backtracks > to the beginning if the parser state has not changed. > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_iter > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_iter f a d = > let rec loop () = > let s = index d > match a d with > | Ok _ when s = index d -> failwith "The parser succeeded without > changing the parser index in `many`. Had an exception not been raised the parser > would have diverged." > | Ok x -> f x; loop() > | Error er -> if s = index d then Ok() else Error er > loop () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_resize_array > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_resize_array a d = > let ar = ResizeArray() > match many_iter ar.Add a d with > | Ok() -> Ok(ar) > | Error er -> Error er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_array > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_array a d = > many_resize_array a d |> Result.map (fun x -> x.ToArray()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many a d = > many_resize_array a d |> Result.map Seq.toList > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sepBy > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy a b d = > let s = index d > match a d with > | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d > | Error x -> if s = index d then Ok [[]] else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sepBy1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 a b d = > match a d with > | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 a d = > match a d with > | Ok a' -> (many a |>> fun b -> a' :: b) d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### attempt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline attempt a d = > let s = index d > match a d with > | Ok x -> Ok x > | Error a as a' -> index_set s d; a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### restore > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Restores the index on an error if at least i tokens have been consumed. > let inline restore i a d = > let s = index d > match a d with > | Ok x -> Ok x > | Error _ as er -> (if index d <= s + i then index_set s d); er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### alt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline alt s a b d = > match a d with > | Ok x -> Ok x > | Error a as a' -> > if s = index d then > match b d with > | Ok x -> Ok x > | Error b -> if s = index d then Error(List.append a b) else Error b > else > a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (<|>) a b d = let s = index d in alt s a b d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (<|>%) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (<|>%) a b d = > let s = index d > match a d with > | Ok x -> Ok x > | Error _ as a' -> if s = index d then Ok b else a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### choice > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice ar d = > let s = index d > let rec loop i = > if i < Array.length ar then > match ar.[[i]] d with > | Ok x -> Ok x > | Error a as a' -> > if s = index d then > match loop (i+1) with > | Ok x -> Ok x > | Error b -> Error(List.append a b) > else > a' > else > Error [[]] > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### between > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between a b c = a >>. c .>> b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## LineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open System.Text > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerRange = {from : int; nearTo : int} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerError = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Tokenizer > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Tokenizer = { > text : string // A single line. > mutable from : int > } with > > member t.Index with get() = t.from and set i = t.from <- i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_char i = {from=i; nearTo=i+1} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### error_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let error_char i er = Result.Error [[range_char i, er]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inc' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inc' i (s : Tokenizer) = s.from <- s.from+i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inc (s : Tokenizer) = inc' 1 s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### eolLineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// End Of Line character > let eolLineParsers = System.Char.MaxValue > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peek' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peek' (s : Tokenizer) i = > let i = s.from + i > if 0 <= i && i < s.text.Length then s.text.[[i]] > else eolLineParsers > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peek > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peek (s : Tokenizer) = peek' s 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1Satisfy2L > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1Satisfy2L init body label (s : Tokenizer) = > let x = peek s > if init x && x <> eolLineParsers then > inc s > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if body x && x <> eolLineParsers then inc s; b.Append(x) |> loop > else b.ToString() > Result.Ok(loop (System.Text.StringBuilder().Append(x))) > else > let i = s.from > error_char i label > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1SatisfyL > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1SatisfyL body label (s : Tokenizer) = > many1Satisfy2L body body label s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline skip c (s : Tokenizer) = > let b = peek s = c in (if b then inc s); b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec spaces' (s : Tokenizer) = > if peek s = ' ' then inc s; spaces' s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces s = > spaces' s |> Result.Ok > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 (s : Tokenizer) = > if peek s = ' ' then inc s; spaces s else error_char s.from "space" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_char c (s : Tokenizer) = > let from = s.from > if skip c s then Ok() else error_char from (sprintf "'%c'" c) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string x (s : Tokenizer) = > if System.String.Compare(s.text,s.from,x,0,x.Length) = 0 then inc' x.Length > s; Ok() > else error_char s.from x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### anyOf > > ── fsharp ────────────────────────────────────────────────────────────────────── > let anyOf (l : char list) (s : Tokenizer) = > let c = peek s > if Seq.contains c l then > inc s; Result.Ok(c) > else > let i = s.from > Error (List.map (fun c -> range_char i, string c) l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### chars_till_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let chars_till_string close (s : Tokenizer) = > assert (close <> "") > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if x = close.[[0]] && > System.String.Compare(s.text,s.from,close,1,close.Length-1) = 0 then inc' > close.Length s; Ok(b.ToString()) > else > if x <> eolLineParsers then inc s; b.Append(x) |> loop > else error_char s.from close > loop(System.Text.StringBuilder()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### numberLineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Parses a number as a sequence of digits and optionally underscores. Filters > out the underscores from the result. > let numberLineParsers (s : Tokenizer) = > let x = peek s > if System.Char.IsDigit x then > inc s > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if x = '_' then inc s; loop b > elif System.Char.IsDigit x then inc s; loop(b.Append(x)) > else Ok(b.ToString()) > loop (System.Text.StringBuilder().Append(x)) > else > let i = s.from > error_char i "number" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### number_fractional > > ── fsharp ────────────────────────────────────────────────────────────────────── > let number_fractional s = > (numberLineParsers .>>. (opt (skip_char '.' >>. numberLineParsers))) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## VSCTypes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCPos > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {|line : int; character : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PackageId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PackageId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### DirId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type DirId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### GlobalId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type GlobalId = { package_id : PackageId; module_id : ModuleId; tag : int } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RGlobalId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RGlobalId = VSCRange * GlobalId > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiEdit > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiEdit = {|from: int; nearTo: int; lines: string [[]]|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Tokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open System.Text > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenKeyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenKeyword = > | SpecIn > | SpecAnd > | SpecFun > | SpecMatch > | SpecTypecase > | SpecFunction > | SpecWith > | SpecWithout > | SpecAs > | SpecWhen > | SpecInl > | SpecForall > | SpecExists > | SpecLet > | SpecInm > | SpecInb > | SpecRec > | SpecIf > | SpecThen > | SpecElif > | SpecElse > | SpecJoin > | SpecJoinBackend > | SpecType > | SpecNominal > | SpecReal > | SpecUnion > | SpecOpen > | SpecWildcard > | SpecPrototype > | SpecInstance > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParenthesisState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParenthesisState = Open | Close > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Parenthesis > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Parenthesis = Round | Square | Curly > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MacroEnum > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MacroEnum = MTerm | MType | MTypeLit > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Literal > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Literal = > | LitUInt8 of uint8 > | LitUInt16 of uint16 > | LitUInt32 of uint32 > | LitUInt64 of uint64 > | LitInt8 of int8 > | LitInt16 of int16 > | LitInt32 of int32 > | LitInt64 of int64 > | LitFloat32 of float32 > | LitFloat64 of float > | LitBool of bool > | LitString of string > | LitChar of char > > // Converts the literal back to their string representation. Doesn't > override the default printer. > member l.LitToString() = > match l with > | LitUInt8 x -> x.ToString("R") > | LitUInt16 x -> x.ToString("R") > | LitUInt32 x -> x.ToString("R") > | LitUInt64 x -> x.ToString("R") > | LitInt8 x -> x.ToString("R") > | LitInt16 x -> x.ToString("R") > | LitInt32 x -> x.ToString("R") > | LitInt64 x -> x.ToString("R") > | LitFloat32 x -> x.ToString("R") > | LitFloat64 x -> x.ToString("R") > | LitBool x -> x.ToString() > | LitString x -> x > | LitChar x -> x.ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SemanticTokenLegend > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SemanticTokenLegend = > | variable = 0 > | symbol = 1 > | string = 2 > | number = 3 > | operator = 4 > | unary_operator = 5 > | comment = 6 > | keyword = 7 > | parenthesis = 8 > | type_variable = 9 > | escaped_char = 10 > | unescaped_char = 11 > | number_suffix = 12 > | escaped_var = 13 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiralToken > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralToken = > | TokVar of string * SemanticTokenLegend > | TokSymbol of string * SemanticTokenLegend > | TokOperator of string * SemanticTokenLegend > | TokUnaryOperator of string * SemanticTokenLegend > | TokValue of Literal > | TokValueSuffix > | TokDefaultValue of string > | TokComment of string > | TokKeyword of TokenKeyword > | TokParenthesis of Parenthesis * ParenthesisState > | TokStringOpen | TokStringClose > | TokText of string > | TokEscapedChar of char > | TokEscapedVar > | TokUnescapedChar of char > | TokMacroOpen | TokMacroClose > | TokMacroTermVar of string > | TokMacroTypeVar of string > | TokMacroTypeLitVar of string > | TokMacroExpression of MacroEnum * ParenthesisState > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### token_groups > > ── fsharp ────────────────────────────────────────────────────────────────────── > let token_groups = function > | TokUnaryOperator(_,r) | TokOperator(_,r) | TokVar(_,r) | TokSymbol(_,r) -> > r > | TokValue (LitChar _) | TokStringOpen | TokStringClose | TokText _ | > TokMacroOpen | TokMacroClose | TokValue(LitString _) -> > SemanticTokenLegend.string > | TokComment _ -> SemanticTokenLegend.comment > | TokKeyword _ -> SemanticTokenLegend.keyword > | TokParenthesis _ -> SemanticTokenLegend.parenthesis > | TokMacroTypeVar _ -> SemanticTokenLegend.type_variable > | TokMacroTypeLitVar _ -> SemanticTokenLegend.type_variable > | TokMacroTermVar _ -> SemanticTokenLegend.variable > | TokMacroExpression _ -> SemanticTokenLegend.parenthesis > | TokEscapedChar _ -> SemanticTokenLegend.escaped_char > | TokEscapedVar -> SemanticTokenLegend.escaped_var > | TokUnescapedChar _ -> SemanticTokenLegend.unescaped_char > | TokValue _ | TokDefaultValue _ -> SemanticTokenLegend.number > | TokValueSuffix -> SemanticTokenLegend.number_suffix > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_lit = function > | LitUInt8 x -> sprintf "%iu8" x > | LitUInt16 x -> sprintf "%iu16" x > | LitUInt32 x -> sprintf "%iu32" x > | LitUInt64 x -> sprintf "%iu64" x > | LitInt8 x -> sprintf "%ii8" x > | LitInt16 x -> sprintf "%ii16" x > | LitInt32 x -> sprintf "%ii32" x > | LitInt64 x -> sprintf "%ii64" x > | LitFloat32 x -> sprintf "%ff32" x > | LitFloat64 x -> sprintf "%ff64" x > | LitBool x -> sprintf "%b" x > | LitString x -> sprintf "%s" x > | LitChar x -> sprintf "%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_small_var_char_starting > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_small_var_char_starting c = System.Char.IsLower c || c = '_' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_var_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_char c = System.Char.IsLetterOrDigit c || c = '_' || c = ''' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_big_var_char_starting > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_big_var_char_starting c = System.Char.IsUpper c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_char_starting c = System.Char.IsLetter c || c = '_' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_parenth_open c = > let f x = c = x > f '(' || f '[[' || f '{' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_parenth_close c = > let f x = c = x > f ')' || f ']]' || f '}' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_operator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > // http://www.asciitable.com/ > let is_operator_char c = > let f x = c = x > '!' <= c && c <= '~' && (is_var_char c || f '"' || is_parenth_open c || > is_parenth_close c) = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_prefix_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_prefix_separator_char c = > let f x = c = x > f ' ' || f eolLineParsers || is_parenth_open c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_postfix_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_postfix_separator_char c = > let f x = c = x > f ' ' || f eolLineParsers || is_parenth_close c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_separator_char c = is_prefix_separator_char c || is_parenth_close c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var (s: Tokenizer) = > let from = s.from > let ok x = Result.Ok ({from=from; nearTo=s.from}, x) > let body x _ = > if skip ':' s then error_char from ": is not allowed directly after a > var." > else > let f x = TokKeyword(x) > match x with > | "in" -> f SpecIn > | "and" -> f SpecAnd | "fun" -> f SpecFun > | "match" -> f SpecMatch | "typecase" -> f SpecTypecase > | "function" -> f SpecFunction > | "with" -> f SpecWith | "without" -> f SpecWithout > | "as" -> f SpecAs | "when" -> f SpecWhen > | "inl" -> f SpecInl | "forall" -> f SpecForall > | "let" -> f SpecLet | "inm" -> f SpecInm > | "inb" -> f SpecInb | "rec" -> f SpecRec > | "if" -> f SpecIf | "then" -> f SpecThen > | "elif" -> f SpecElif | "else" -> f SpecElse > | "join" -> f SpecJoin | "join_backend" -> f SpecJoinBackend > | "type" -> f SpecType | "nominal" -> f SpecNominal > | "real" -> f SpecReal | "union" -> f SpecUnion > | "open" -> f SpecOpen | "_" -> f SpecWildcard > | "prototype" -> f SpecPrototype | "instance" -> f SpecInstance > | "true" -> TokValue(LitBool true) | "false" -> TokValue(LitBool > false) > | "exists" -> f SpecExists > | x -> TokVar(x,SemanticTokenLegend.variable) > |> ok > > (many1Satisfy2L is_var_char_starting is_var_char "variable" >>= body .>> > spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### numberTokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let numberTokenize (s: Tokenizer) = > let from = s.from > > let parser (s: Tokenizer) = > if peek s = '-' && System.Char.IsDigit (peek' s 1) && > is_prefix_separator_char (peek' s -1) then > inc s > number_fractional s |> Result.map (function > | (a,Some b) -> sprintf "-%s.%s" a b > | (a,None) -> "-"+a) > else number_fractional s |> Result.map (function > | (a,Some b) -> sprintf "%s.%s" a b > | (a,None) -> a) > > let followedBySuffix x (s: Tokenizer) = > let from' = s.from > let inline safe_parse string_to_val val_to_lit val_dsc = > if (let x = peek s in is_separator_char x || is_operator_char x) > then > match string_to_val x with > | true, x -> Ok [[{from=from; nearTo=from'}, TokValue(val_to_lit > x); {from=from'; nearTo=s.from}, TokValueSuffix]] > | false, _ -> Error [[{from=from; nearTo=s.from}, (sprintf "The > string %s cannot be safely parsed as %s." x val_dsc)]] > else error_char s.from "separator" > let skip c = skip c s > if skip 'i' then > if skip '8' then safe_parse System.SByte.TryParse LitInt8 "i8" > elif skip '1' && skip '6' then safe_parse System.Int16.TryParse > LitInt16 "i16" > elif skip '3' && skip '2' then safe_parse System.Int32.TryParse > LitInt32 "i32" > elif skip '6' && skip '4' then safe_parse System.Int64.TryParse > LitInt64 "i64" > else error_char s.from "8,16,32 or 64" > elif skip 'u' then > if skip '8' then safe_parse System.Byte.TryParse LitUInt8 "uint8" > elif skip '1' && skip '6' then safe_parse System.UInt16.TryParse > LitUInt16 "u16" > elif skip '3' && skip '2' then safe_parse System.UInt32.TryParse > LitUInt32 "u32" > elif skip '6' && skip '4' then safe_parse System.UInt64.TryParse > LitUInt64 "u64" > else error_char s.from "8,16,32 or 64" > elif skip 'f' then > if skip '3' && skip '2' then safe_parse System.Single.TryParse > LitFloat32 "f32" > elif skip '6' && skip '4' then safe_parse System.Double.TryParse > LitFloat64 "f64" > else error_char s.from "32 or 64" > else Ok [[{from=from; nearTo=s.from}, TokDefaultValue x]] > > (parser >>= followedBySuffix .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let symbol s = > let from = s.from > let f x = ({from=from; nearTo=s.from}, x) > > let symbol x = TokSymbol(x,SemanticTokenLegend.symbol) > let x = peek s > let x' = peek' s 1 > if x = '.' && x' = '(' then inc' 2 s; ((many1SatisfyL is_operator_char > "operator") .>> skip_char ')' |>> (symbol >> f) .>> spaces) s > elif x = '.' && is_var_char_starting x' then inc s; ((many1SatisfyL > is_var_char "variable") |>> (symbol >> f) .>> spaces) s > else error_char from "symbol" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### comment > > ── fsharp ────────────────────────────────────────────────────────────────────── > let comment (s : Tokenizer) = > if peek s = '/' && peek' s 1 = '/' then > let from = s.from > inc' 2 s > while peek s = '/' || (peek s = '!' && peek' s 1 = ' ') do > inc s > if skip ' ' s then > let com = s.text.[[s.from..]] > s.from <- s.text.Length > Ok ({from=from; nearTo=s.from}, TokComment com) > else error_char s.from "whitespace" > else > error_char s.from "comment" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### operator > > ── fsharp ────────────────────────────────────────────────────────────────────── > let operator (s : Tokenizer) = > let from = s.from > let ok x = ({from=from; nearTo=s.from}, x) |> Ok > let is_separator_prev = is_prefix_separator_char (peek' s -1) > let f name (s: Tokenizer) = > if is_separator_prev && (is_postfix_separator_char (peek s) = false) > then TokUnaryOperator(name,SemanticTokenLegend.unary_operator) |> ok > else TokOperator(name,SemanticTokenLegend.operator) |> ok > (many1SatisfyL is_operator_char "operator" >>= f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_raw > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_raw s = > let from = s.from > let f x = {from=from; nearTo=s.from}, TokValue(LitString x) > (skip_string "@\"" >>. chars_till_string "\"" |>> f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### char_quoted > > ── fsharp ────────────────────────────────────────────────────────────────────── > let char_quoted s = > let char_quoted_body (s: Tokenizer) = > let inline read on_succ = > let x = peek s > if x <> eolLineParsers then inc s; on_succ x > else error_char s.from "character or '" > read (function > | '\\' -> > read (Ok << function > | 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | 'b' -> '\b' > | x -> x > ) > | x -> Ok x > ) > let from = s.from > let f _ x _ = {from=from; nearTo=s.from}, TokValue(LitChar x) > (pipe3 (skip_char '\'') char_quoted_body (skip_char '\'') f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### special_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline special_char l text s = > let inline f from x = {from=from; nearTo=s.from}, x > let f = f s.from > inc s > let esc x = inc s; text (f (TokEscapedChar x) :: l) > let unesc x = inc s; text (f (TokUnescapedChar x) :: l) > match peek s with > | x when x = eolLineParsers -> error_char s.from "character" > | 'n' -> esc '\n' | 'r' -> esc '\r' | 't' -> esc '\t' | 'b' -> esc '\b' > | x -> unesc x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_quoted' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_quoted' s = > let inline f from x = {from=from; nearTo=s.from}, x > let close l = let f = f s.from in inc s; List.rev (f TokStringClose :: l) |> > Ok > let rec text l = > let f = f s.from > let rec loop (str : System.Text.StringBuilder) = > let l () = if 0 < str.Length then f (TokText(str.ToString())) :: l > else l > match peek s with > | x when x = eolLineParsers -> error_char s.from "character or \"" > | '\\' -> special_char (l ()) text s > | '"' -> close (l ()) > | x -> inc s; loop (str.Append(x)) > loop (System.Text.StringBuilder()) > > match peek s with > | '"' -> let f = f s.from in inc s; text [[f TokStringOpen]] > | _ -> error_char s.from "\"" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_quoted > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_quoted s = (string_quoted' .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerMacro = > | Text of TokenizerRange * string > | EscapedChar of TokenizerRange * char > | EscapedVar of TokenizerRange > | UnescapedChar of TokenizerRange * char > | Expression of TokenizerRange * string * MacroEnum > | Var of TokenizerRange * string * MacroEnum > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline range p s = > let from = s.from > match p s with > | Ok x -> Ok({from=from; nearTo=s.from}, x) > | Error l -> Error l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### brackets > > ── fsharp ────────────────────────────────────────────────────────────────────── > let brackets s = > let from = s.from > let f spec = inc s; (spaces >>% ({from=from; nearTo=s.from}, > TokParenthesis(spec))) s > match peek s with > | '(' -> f (Round,Open) | '[[' -> f (Square,Open) | '{' -> f (Curly,Open) > | ')' -> f (Round,Close) | ']]' -> f (Square,Close) | '}' -> f (Curly,Close) > | _ -> error_char s.from "`(`,`[[`,`{`,`}`,`]]` or `)`" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tab > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tab s = if peek s = '\t' then Error [[range_char (index s), "Tabs are not > allowed."]] else Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### eolTokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let eolTokenize s = if peek s = eolLineParsers then Ok [[]] else Error > [[range_char (index s), "end of line"]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### token > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec token s = > let i = s.from > let inline (+) a b = alt i a b > let individual_tokens = string_quoted + numberTokenize + ((var + symbol + > string_raw + char_quoted + brackets + comment + operator) |>> fun x -> [[x]]) > |>> fun x -> x, [[]] > (macro + individual_tokens) s > and tokenize text = > let mutable ar = FSharpx.Collections.PersistentVector.empty > let mutable er = [[]] > let tokens = > many_iter (fun (x : (TokenizerRange * SpiralToken) list,er' : > (TokenizerRange * string) list) -> > List.iter (fun x -> ar <- FSharpx.Collections.PersistentVector.conj > x ar) x > er <- List.append er' er > ) token > let er = match (spaces >>. tokens .>> (eolTokenize <|> tab)) {from=0; > text=text} with Ok() -> er | Error er' -> List.append er' er > ar, er > and macro s = > let char_to_macro_expr = function > | '`' -> MType > | '!' -> MTerm > | '@' -> MTypeLit > | _ -> failwith "Compiler error: Unknown char in the tokenizer." > > let p_special_char s = > match peek' s 0, peek' s 1 with > | '\\', ('n' | 'r' | 't' | 'b' as c) -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(EscapedChar(r, c)) > | '\\', ('v' as c) -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(EscapedVar(r)) > | '\\', c -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(UnescapedChar(r, c)) > | _ -> error_char s.from "\\" > > let p_var s = (many1Satisfy2L is_var_char_starting is_var_char "variable") s > let p_text closing_char s = (range (many1SatisfyL (fun c -> c <> > closing_char && c <> '`' && c <> '!' && c <> '@' && c <> '\\') "macro text") |>> > Text) s > let p_expr s = > let start = anyOf [['`'; '!'; '@']] > let case_paren start_char = > let mutable c = 1 // number of open parens. > between (skip_char '(') (skip_char ')') (many1SatisfyL (fun x -> // > Stops when the number of open parens is 0. > c <- c + (match x with '(' -> 1 | ')' -> -1 | _ -> 0) > c > 0 > ) "not )") > |>> fun (body) range -> Expression(range,body,char_to_macro_expr > start_char) > let case_var start_char = > (skip_char start_char |>> fun () range -> > UnescapedChar(range,start_char)) > <|> (p_var |>> fun body range -> Var(range,body,char_to_macro_expr > start_char)) > (range (start >>= fun start_char -> (case_paren start_char <|> case_var > start_char)) > |>> fun (range, f) -> f range) s > let p_macro_inner closing_char s = (many (p_special_char <|> p_text > closing_char <|> p_expr) <|>% [[]]) s > let p_macro s = > let body a b = range (between (skip_string a) (skip_char b) > (p_macro_inner b)) > (body "$\"" '"' <|> body "$'" ''') s > > match (p_macro .>> spaces) s with > | Ok(r, x) -> > let start = > let r = {from=r.from; nearTo=r.from+2} > r, TokMacroOpen > let end_ = > let r = {from=r.nearTo-1; nearTo=r.nearTo} > r, TokMacroClose > > let mutable er = [[]] > x |> List.collect (function > | Text(r,x) -> [[r, TokText x]] > | EscapedChar(r,x) -> > let x = match x with 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | > 'b' -> '\b' | x -> x > [[r, TokEscapedChar x]] > | EscapedVar(r) -> [[r, TokEscapedVar]] > | UnescapedChar(r,x) -> [[r, TokUnescapedChar x]] > | Var(r,x,MType) -> [[r, TokMacroTypeVar x]] > | Var(r,x,MTypeLit) -> [[r, TokMacroTypeLitVar x]] > | Var(r,x,MTerm) -> [[r, TokMacroTermVar x]] > | Expression(r,x,t) -> > let start = > let r = {from=r.from; nearTo=r.from+2} > r, TokMacroExpression(t,Open) > let end_ = > let r = {from=r.nearTo-1; nearTo=r.nearTo} > r, TokMacroExpression(t,Close) > let middle,er' = > let adjust_range (r : TokenizerRange,x) = {from=r.from + > (fst start).nearTo; nearTo=r.nearTo + (fst start).nearTo}, x > let middle,er' = tokenize x > FSharpx.Collections.PersistentVector.map adjust_range > middle, > List.map adjust_range er' > er <- List.append er' er > List.concat [[[[start]]; List.ofSeq middle; [[end_]]]] > ) > |> fun l -> Ok(List.concat [[[[start]]; l; [[end_]]]], er) > | Error er -> Error er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineToken > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineToken = TokenizerRange * SpiralToken > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineComment > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineComment = TokenizerRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineTokenErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineTokenErrors = (TokenizerRange * TokenizerError) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### vscode_tokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > let vscode_tokens ((a,b) : VSCRange) (lines : LineToken > FSharpx.Collections.PersistentVector FSharpx.Collections.PersistentVector) = > let in_range x = min lines.Length x > let from, near_to = in_range a.line, in_range (b.line+1) > let toks = ResizeArray() > let rec loop i line_delta = > if i < near_to then > lines.[[i]] |> FSharpx.Collections.PersistentVector.fold (fun > (line_delta,from_prev) (r,x) -> > toks.AddRange [[|line_delta; r.from-from_prev; r.nearTo-r.from; > int (token_groups x); 0|]] > 0, r.from > ) (line_delta, 0) > |> fst |> ((+) 1) |> loop (i+1) > > loop from from > toks.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockSplitting > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineTokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineTokens = LineToken FSharpx.Collections.PersistentVector > FSharpx.Collections.PersistentVector > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Block<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block<'a> = {block: 'a; offset: int} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### block_at > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Reads the comments up to a statement, and then reads the statement body. > Leaves any errors for the parsing stage. > let block_at (lines : LineTokens) i = > let mutable block = FSharpx.Collections.PersistentVector.empty > let add x = block <- FSharpx.Collections.PersistentVector.conj x block > let rec loop_initial i = > if i < lines.Length then > let x = lines.[[i]] > add x > if 0 < x.Length then > let r,t = x.[[0]] > if r.from = 0 then > match t with > | TokComment _ -> loop_initial (i+1) > | _ -> loop_body (i+1) > else loop_initial (i+1) // This branch will be an error in the > parsing stage unless the token is a comment. > else loop_initial (i+1) > and loop_body i = > if i < lines.Length then > let x = lines.[[i]] > if 0 < x.Length then > let r,_ = x.[[0]] > if r.from <> 0 then add x; loop_body (i+1) > else add x; loop_body (i+1) > loop_initial i > {block = block; offset = i} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### block_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses all the blocks. > let rec block_all lines i = > if i < FSharpx.Collections.PersistentVector.length lines then > let x = block_at lines i > x :: block_all lines (i+x.block.Length) else [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses all the blocks with diffing. Only parses those blocks which are dirty > based of the edit range. Preserves ref equality and saves work. > // Without considering ref preservation, it is functionally equivalent to just > call `block_all` on just `lines`. > // This function is difficult to read as it is several operations fused into one > loop. > let wdiff_block_all (blocks : LineTokens Block list) (lines : LineTokens, > lines_added, from, nearTo) = > // Lines added minus lines removed. > let line_adjustment = lines_added - (nearTo - from) > // The dirty block boundary needs to be more conservative when a separator > is added in the first position of block. > // Imagine adding a newline right on a block start. This would extend the > previous block, but the naive check would not react to it. > // The same goes for pasting an indented piece of text. > let dirty_from = let x = lines.[[from]] in from - (if x.Length = 0 || 0 < > (fst x.[[0]]).from then 1 else 0) > let is_dirty (x : LineTokens Block) = (dirty_from <= x.offset && x.offset < > nearTo) || (x.offset <= dirty_from && dirty_from < x.offset + x.block.Length) > let rec loop blocks i = > if i < lines.Length then > match blocks with > | x :: xs -> > // If the block is dirty, forget it. > if is_dirty x then loop xs i else > // If the block is past the removal range, adjust its line > offset. > let x = {x with offset=if nearTo <= x.offset then x.offset + > line_adjustment else x.offset} > // The block can't be dirty here. Hence if the offsets are > the same, so are the blocks. Take it. > if x.offset = i then x :: loop xs (i + x.block.Length) > // Else if the block has been skipped over, forget it. > elif x.offset < i then loop xs i > // Else the block has been dirty filtered, recalculate it. > else let x = block_at lines i in x :: loop blocks (i + > x.block.Length) > | [[]] -> block_all lines i > else [[]] > loop blocks 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open FParsec > // open FSharp.Core > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SymbolString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SymbolString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VarString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VarString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### NominalString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type NominalString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Layout > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Layout = Heap | HeapMutable | StackMutable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FunType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FunType = FT_Vanilla | FT_Pointer | FT_Closure // The closure and the > pointer are specific to the C++ backend. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Op > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Op = > // Converts the function to a specialized type specific to the C++ backend. > | ToFunPtr > | ToFunClosure > > // Compile time hash set > | HashSetCreate > | HashSetAdd > | HashSetContains > | HashSetRemove > | HashSetCount > > // Compile time hash map > | HashMapCreate > | HashMapSetImmutable > | HashMapSet > | HashMapAdd > | HashMapTryAdd > | HashMapContains > | HashMapRemove > | HashMapCount > | HashMapTryGet > > // Pragma > | PragmaUnrollPush > | PragmaUnrollPop > > // Backend branching > | BackendSwitch > > // Reordering check > | UsesOriginalTermVars > | UsesOriginalNominals > > // Imports > | Global > > // Python > | ToPythonRecord > | ToPythonNamedTuple > > // Branching > | While > | Do > | Indent > > // Layout > | LayoutToHeap > | LayoutToHeapMutable > | LayoutToStackMutable > | LayoutIndex > > // Type > | TypeToVar > | TypeToSymbol > | TypeLitToLit > | LitToTypeLit > | LitToSymbol > > // Closure conversion > | Dyn > > // Nominal > | NominalCreate // In addition to regular nominals, it can also creates > unions > | NominalStrip > | NominalTypeApply > > // Union > | Unbox > | Unbox2 > | UnionTag > | UnionUntag > | UnionToRecord > > // String > | StringLength > | StringIndex > | StringSlice > | StaticStringConcat > | Printf // Cuda specific > > // Array > | ArrayCreate > | ArrayLength > | ArrayIndex > | ArrayIndexSet > > // Record > | RecordMap > | RecordIter > | RecordFilter > | RecordFold > | RecordFoldBack > | RecordLength > > // Record Type > | RecordTypeMap > | RecordTypeIter > | RecordTypeFold > | RecordTypeFoldBack > | RecordTypeLength > | RecordTypeTryFind > > // BinOps > | Add > | Sub > | Mult > | Div > | Mod > | Pow > | LTE > | LT > | EQ > | TypeEq > | NEQ > | GT > | GTE > | BoolAnd > | BoolOr > | BitwiseAnd > | BitwiseOr > | BitwiseXor > | BitwiseComplement > | ShiftLeft > | ShiftRight > > // Unary math ops > | Neg > | Tanh > | Log > | Exp > | Sin > | Cos > | Sqrt > | NanIs > | Conv > > // Infinity > | Infinity > | Pi > > // Static Is > | LitIs > | PrimIs > | SymbolIs > | VarIs > | UnionIs > | HeapUnionIs > | LayoutIs > | NominalIs > | FunctionIs > | ExistsIs > | PrototypeHas > > // Static Type Is > | PrimTypeIs > | SymbolTypeIs > | UnionTypeIs > | HeapUnionTypeIs > | LayoutTypeIs > | ExistsTypeIs > | NominalTypeIs > > // Panic > | FailWith > > // Static unary operations > | PrintStatic > | PrintRaw > | ErrorType > | ExistsStrip > | StringLitToSymbol > | SymbolToString > > // Serialization helpers > | VarTag > | TagToSymbol > | FunctionTermSlotsGet > | FunctionTermSlotsSet > | FreeVars > | FreeVarsReplace > | SizeOf > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PatternCompilationErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PatternCompilationErrors = > | DisjointOrPatternVar > | DuplicateTermVar > | DuplicateTypeVar > | ShadowedVar > | DuplicateRecordSymbol > | DuplicateRecordInjection > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserErrors = > | TypeVarsNeedToBeExplicitForExists > | InvalidPattern of PatternCompilationErrors > | ExpectedKeyword of TokenKeyword > | ExpectedStringOpen | ExpectedStringClose > | ExpectedMacroOpen | ExpectedMacroClose > | ExpectedMacroVar | ExpectedMacroTypeVar | ExpectedMacroTypeLitVar > | ExpectedEscapedChar of is_term_macro : bool > | ExpectedText | ExpectedUnescapedChar > | ExpectedOperator' > | ExpectedOperator of string > | ExpectedUnaryOperator' > | ExpectedUnaryOperator of string > | ExpectedUnit > | ExpectedVar > | ExpectedVarOrOpAsNameOfRecStatement > | ExpectedVarOrOpAsNameOfGlobalStatement > | ExpectedSmallVar > | ExpectedBigVar > | ExpectedLit > | ExpectedSymbolPaired > | SymbolPairedShouldStartWithUppercaseInTypeScope > | ExpectedSymbol > | ExpectedParenthesis of Parenthesis * ParenthesisState > | ExpectedMacroExpression of MacroEnum * ParenthesisState > | ExpectedOpenParenthesis > | ExpectedStatement > | ExpectedEob > | ExpectedFunctionAsBodyOfRecStatement > | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp > | ExpectedGlobalFunction > | ExpectedExpression > | InbuiltOpNotFound > | UnknownOperator > | UnexpectedEob > | UnexpectedAndInlRec > | ForallNotAllowed > | TypecaseNotAllowed > | MetavarNotAllowed > | TermNotAllowed > | UnknownError > | DuplicateRecordTypeVar > | DuplicateForallVar > | DuplicateExistsVar > | DuplicateConstraint > | DuplicateTermRecordSymbol > | DuplicateTermRecordInjection > | DuplicateRecFunctionName > | BottomUpNumberParseError of string * string > | ExpectedPairedSymbolInUnion > | DuplicateUnionKey > | MetavarShadowedByVar > | VarShadowedByMetavar > | ListLiteralsNotAllowedInBottomUp > | ArrayLiteralsNotAllowedInBottomUp > | ForallNotAllowedInTypecase > | ExistsNotAllowedInTypecase > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawKindExpr > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawKindExpr = > | RawKindWildcard > | RawKindStar > | RawKindFun of RawKindExpr * RawKindExpr > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionLayout > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionLayout = UStack | UHeap > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HoVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HoVar = VSCRange * (VarString * RawKindExpr) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypeVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypeVar = HoVar * (VSCRange * VarString) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawMacro = > | RawMacroText of VSCRange * string > | RawMacroTerm of VSCRange * RawExpr > | RawMacroType of VSCRange * RawTExpr > | RawMacroTypeLit of VSCRange * RawTExpr > and RawRecordWith = > | RawRecordWithSymbol of (VSCRange * SymbolString) * RawExpr > | RawRecordWithSymbolModify of (VSCRange * SymbolString) * RawExpr > | RawRecordWithInjectVar of (VSCRange * VarString) * RawExpr > | RawRecordWithInjectVarModify of (VSCRange * VarString) * RawExpr > and RawRecordWithout = > | RawRecordWithoutSymbol of VSCRange * SymbolString > | RawRecordWithoutInjectVar of VSCRange * VarString > and PatRecordMember = > | PatRecordMembersSymbol of (VSCRange * SymbolString) * name: Pattern > | PatRecordMembersInjectVar of (VSCRange * VarString) * name: Pattern > and Pattern = > | PatB of VSCRange > | PatE of VSCRange > | PatVar of VSCRange * VarString > | PatDyn of VSCRange * Pattern > | PatUnbox of VSCRange * symbol: string * Pattern > | PatExists of VSCRange * (VSCRange * VarString) list * Pattern > | PatAnnot of VSCRange * Pattern * RawTExpr > | PatPair of VSCRange * Pattern * Pattern > | PatSymbol of VSCRange * string > | PatRecordMembers of VSCRange * PatRecordMember list > | PatOr of VSCRange * Pattern * Pattern > | PatAnd of VSCRange * Pattern * Pattern > | PatValue of VSCRange * Literal > | PatDefaultValue of VSCRange * VarString > | PatWhen of VSCRange * Pattern * RawExpr > | PatNominal of VSCRange * (VSCRange * VarString) * (VSCRange * VarString) > list * Pattern > | PatArray of VSCRange * Pattern list > | PatFilledDefaultValue of VSCRange * VarString * RawTExpr // Filled in by > the inferencer. > and RawExpr = > | RawB of VSCRange > | RawV of VSCRange * VarString * is_tvar_applied : bool > | RawLit of VSCRange * Literal > | RawDefaultLit of VSCRange * string > | RawSymbol of VSCRange * SymbolString > | RawType of VSCRange * RawTExpr > | RawMatch of VSCRange * body: RawExpr * (Pattern * RawExpr) list > | RawFun of VSCRange * (Pattern * RawExpr) list > | RawForall of VSCRange * TypeVar * RawExpr > | RawExists of VSCRange * (VSCRange * RawTExpr list option) * RawExpr > | RawRecBlock of VSCRange * ((VSCRange * VarString) * RawExpr) list * > on_succ: RawExpr // The bodies of a block must be RawFun or RawForall. > | RawRecordWith of VSCRange * RawExpr list * RawRecordWith list * > RawRecordWithout list > | RawOp of VSCRange * Op * RawExpr list > | RawJoinPoint of VSCRange * backend: (VSCRange * string) option * RawExpr * > name: string option > | RawAnnot of VSCRange * RawExpr * RawTExpr > | RawTypecase of VSCRange * RawTExpr * (RawTExpr * RawExpr) list > | RawOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) > list * on_succ: RawExpr > | RawApply of VSCRange * RawExpr * RawExpr > | RawIfThenElse of VSCRange * RawExpr * RawExpr * RawExpr > | RawIfThen of VSCRange * RawExpr * RawExpr > | RawPair of VSCRange * RawExpr * RawExpr > | RawSeq of VSCRange * RawExpr * RawExpr > | RawHeapMutableSet of VSCRange * RawExpr * RawExpr list * RawExpr > | RawReal of VSCRange * RawExpr > | RawMacro of VSCRange * RawMacro list > | RawArray of VSCRange * RawExpr list > | RawMissingBody of VSCRange > | RawFilledForall of VSCRange * string * RawExpr // Filled in by the > inferencer. > and RawTExpr = > | RawTWildcard of VSCRange > | RawTB of VSCRange > | RawTMetaVar of VSCRange * VarString > | RawTLit of VSCRange * Literal > | RawTVar of VSCRange * VarString > | RawTPair of VSCRange * RawTExpr * RawTExpr > | RawTFun of VSCRange * RawTExpr * RawTExpr * FunType > | RawTArray of VSCRange * RawTExpr > | RawTRecord of VSCRange * Map<int * string,RawTExpr> > | RawTSymbol of VSCRange * SymbolString > | RawTApply of VSCRange * RawTExpr * RawTExpr > | RawTForall of VSCRange * TypeVar * RawTExpr > | RawTExists of VSCRange * TypeVar list * RawTExpr > | RawTPrim of VSCRange * PrimitiveType > | RawTTerm of VSCRange * RawExpr > | RawTMacro of VSCRange * RawMacro list > | RawTUnion of VSCRange * Map<int * string,bool * RawTExpr> * UnionLayout * > this: RawTExpr // The boolean arg determines whether the union case is > generalized. `this` is the self type. > | RawTLayout of VSCRange * RawTExpr * Layout > | RawTTypecase of VSCRange * RawTExpr * (RawTExpr * RawTExpr) list > | RawTFilledNominal of VSCRange * GlobalId // Filled in by the inferencer. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (+.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (+.) (a,_) (_,b) = a,b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_hovar ((r,_) : HoVar) = r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_typevar ((x,_) : TypeVar) = range_of_hovar x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### hovar_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let hovar_name ((_,(name,_)) : HoVar) = name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typevar_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typevar_name ((h,_) : TypeVar) = hovar_name h > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_record_with > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_record_with = function > | RawRecordWithSymbol((r,_),_) > | RawRecordWithSymbolModify((r,_),_) > | RawRecordWithInjectVar((r,_),_) > | RawRecordWithInjectVarModify((r,_),_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_record_without > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_record_without = function > | RawRecordWithoutSymbol(r,_) > | RawRecordWithoutInjectVar(r,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_pattern > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_pattern = function > | PatB r > | PatE r > | PatVar(r,_) > | PatDyn(r,_) > | PatUnbox(r,_,_) > | PatExists(r,_,_) > | PatSymbol(r,_) > | PatValue(r,_) > | PatDefaultValue(r,_) > | PatRecordMembers(r,_) > | PatArray(r,_) > | PatAnnot(r,_,_) > | PatPair(r,_,_) > | PatOr(r,_,_) > | PatAnd(r,_,_) > | PatWhen(r,_,_) > | PatFilledDefaultValue(r,_,_) > | PatNominal(r,_,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_pat_record_member > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_pat_record_member = function > | PatRecordMembersSymbol((r,_),x) > | PatRecordMembersInjectVar((r,_),x) -> r +. range_of_pattern x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_expr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_expr = function > | RawB r > | RawMissingBody r > | RawMacro(r,_) > | RawV(r,_,_) > | RawLit(r,_) > | RawDefaultLit(r,_) > | RawSymbol(r,_) > | RawType(r,_) > | RawJoinPoint(r,_,_,_) > | RawArray(r,_) > | RawMatch(r,_,_) > | RawFun(r,_) > | RawReal(r,_) > | RawRecBlock(r,_,_) > | RawOp(r,_,_) > | RawAnnot(r,_,_) > | RawTypecase(r,_,_) > | RawForall(r,_,_) > | RawExists(r,_,_) > | RawFilledForall(r,_,_) > | RawApply(r,_,_) > | RawPair(r,_,_) > | RawIfThen(r,_,_) > | RawSeq(r,_,_) > | RawHeapMutableSet(r,_,_,_) > | RawRecordWith(r,_,_,_) > | RawIfThenElse(r,_,_,_) > | RawOpen(r,_,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rawv > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rawv (r,x) = RawV(r,x,true) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_texpr = function > | RawTWildcard r > | RawTB r > | RawTLit(r,_) > | RawTMacro(r,_) > | RawTMetaVar(r,_) > | RawTVar(r,_) > | RawTArray(r,_) > | RawTRecord(r,_) > | RawTUnion(r,_,_,_) > | RawTSymbol(r,_) > | RawTPrim(r,_) > | RawTTerm(r,_) > | RawTFilledNominal(r,_) > | RawTPair(r,_,_) > | RawTFun(r,_,_,_) > | RawTApply(r,_,_) > | RawTLayout(r,_,_) > | RawTExists(r,_,_) > | RawTTypecase(r,_,_) > | RawTForall(r,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr_gadt_constructor > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec range_of_texpr_gadt_constructor = function > | RawTForall(_,_,x) -> range_of_texpr_gadt_constructor x > | RawTFun(_,_,x,_) | x -> range_of_texpr x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr_gadt_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec range_of_texpr_gadt_body = function > | RawTForall(_,_,x) -> range_of_texpr_gadt_body x > | RawTFun(_,x,_,_) | x -> range_of_texpr x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VectorCord > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VectorCord = {|row : int; col : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env__ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env__ = { > semantic_updates : (VectorCord * SemanticTokenLegend) ResizeArray > tokens_cords : VectorCord [[]] > tokens : (VSCRange * SpiralToken) [[]] > comments : LineComment option [[]] > i : int ref > is_top_down : bool > default_env : DefaultEnv > } with > > member d.Index with get() = d.i.contents and set(i) = d.i.Value <- i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockParsingEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockParsingEnv = Env__ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### try_current_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline try_current_template (d : BlockParsingEnv) on_succ on_fail = > let i = d.Index > if i < d.tokens.Length then on_succ d.tokens.[[i]] > else on_fail() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### try_current > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline try_current d f = try_current_template d (fun (p,t) -> f (p, t)) (fun > () -> Result.Error [[]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### print_current > > ── fsharp ────────────────────────────────────────────────────────────────────── > let print_current d = try_current d (fun x -> printfn "%A" x; Ok()) // For > parser debugging purposes. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### line_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline line_template d f = try_current_template d (fst >> f) (fun _ -> -1) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### col > > ── fsharp ────────────────────────────────────────────────────────────────────── > let col d = line_template d (fun (r,_) -> r.character) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lineBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lineBlockParsing d = line_template d (fun (r,_) -> r.line) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip' (d : BlockParsingEnv) i = d.i.Value <- d.i.contents+i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skipBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skipBlockParsing d = skip' d 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string_open d = > try_current d <| function > | p,TokStringOpen -> skipBlockParsing d; Result.Ok(p) > | p, _ -> Result.Error [[p, ExpectedStringOpen]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string_close d = > try_current d <| function > | p,TokStringClose -> skipBlockParsing d; Result.Ok(p) > | p, _ -> Result.Error [[p, ExpectedStringClose]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_open d = > try_current d <| function > | p,TokMacroOpen -> skipBlockParsing d; Ok(p) > | p, _ -> Result.Error [[p, ExpectedMacroOpen]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_close d = > try_current d <| function > | p,TokMacroClose -> skipBlockParsing d; Ok(p) > | p, _ -> Result.Error [[p, ExpectedMacroClose]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_text > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_text is_term_macro d = > let (+.) a b = > match a with > | Some a -> Some (a +. b) > | None -> Some b > let rec loop (a : VSCRange option) (str : System.Text.StringBuilder) = > try_current d <| function > | b,TokText x -> skipBlockParsing d; loop (a +. b) (str.Append(x)) > | b,TokEscapedVar when is_term_macro -> skipBlockParsing d; loop (a > +. b) (str.Append("\\v")) > | b,(TokEscapedChar x | TokUnescapedChar x) -> skipBlockParsing d; > loop (a +. b) (str.Append(x)) > | b, _ -> > if Option.isNone a then Result.Error [[b, ExpectedText; b, > ExpectedEscapedChar is_term_macro; b, ExpectedUnescapedChar]] > else Result.Ok(Option.get a, str.ToString()) > loop None (System.Text.StringBuilder()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_macro_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_macro_var d = > try_current d <| function > | p, TokMacroTermVar x -> skipBlockParsing d; > Result.Ok(RawMacroTerm(p,rawv(p,x))) > | p, TokMacroTypeVar x -> skipBlockParsing d; > Result.Ok(RawMacroType(p,RawTVar(p,x))) > | p, TokMacroTypeLitVar x -> skipBlockParsing d; > Result.Ok(RawMacroTypeLit(p,RawTVar(p,x))) > | p,_ -> Error [[p, ExpectedMacroVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_macro_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_macro_type_var d = > try_current d <| function > | p, TokMacroTypeVar x -> skipBlockParsing d; > Result.Ok(RawMacroType(p,RawTVar(p,x))) > | p, TokMacroTypeLitVar x -> skipBlockParsing d; > Result.Ok(RawMacroTypeLit(p,RawTVar(p,x))) > | p,_ -> Error [[p, ExpectedMacroTypeVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_keyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_keyword t d = > try_current d <| function > | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedKeyword t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_keyword' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_keyword' t d = > try_current d <| function > | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok p > | p, _ -> Error [[p, ExpectedKeyword t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_unary_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_unary_op d = > try_current d <| function > | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedUnaryOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_unary_op' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_unary_op' d = > try_current d <| function > | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedUnaryOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op d = > try_current d <| function > | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op' d = > try_current d <| function > | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### update_semantic > > ── fsharp ────────────────────────────────────────────────────────────────────── > let update_semantic (d : BlockParsingEnv) = let i = d.Index in fun x -> > d.semantic_updates.Add(d.tokens_cords.[[i]], x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op_type d = > try_current d <| function > | p, TokOperator(t',r) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_op t d = > try_current d <| function > | p, TokOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok p > | p, _ -> Error [[p, ExpectedOperator t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_unary_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_unary_op t d = > try_current d <| function > | p, TokUnaryOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok > t' > | p, _ -> Error [[p, ExpectedUnaryOperator t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var d = > try_current d <| function > | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var' d = > try_current d <| function > | p, TokVar(t',_) -> let r = update_semantic d in skipBlockParsing d; > Result.Ok(p,t',r) > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var'' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var'' d = > try_current d <| function > | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> skipBlockParsing d; > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var_as_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var_as_symbol d = > try_current d <| function > | p, TokVar(t',_) -> update_semantic d SemanticTokenLegend.symbol; > skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var_as_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var_as_symbol d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.symbol; skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var_as_keyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var_as_keyword d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.keyword; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_type_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_type_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_type_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_type_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; > Result.Ok(t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_type_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_type_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_value > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_value d = > try_current d <| function > | p, TokValue t' -> > skipBlockParsing d > if d.Index < d.tokens.Length then > match snd d.tokens.[[d.Index]] with > | TokValueSuffix -> skipBlockParsing d > | _ -> () > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedLit]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_symbol d = > try_current d <| function > | p, TokSymbol(t',r) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSymbol]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_parenthesis > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_parenthesis a b d = > try_current d <| function > | p, TokParenthesis(a',b') when a = a' && b = b' -> skipBlockParsing d; > Result.Ok() > | p, _ -> Error [[p, ExpectedParenthesis(a,b)]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_expression > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_expression a b d = > try_current d <| function > | p, TokMacroExpression(a',b') when a = a' && b = b' -> skipBlockParsing > d; Result.Ok() > | p, _ -> Error [[p, ExpectedMacroExpression(a,b)]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### on_succ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let on_succ x _ = Result.Ok x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### macro_expression > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open FParsec > let macro_expression ty a d = (skip_macro_expression ty Open >>. a .>> > skip_macro_expression ty Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rounds a d = (skip_parenthesis Round Open >>. a .>> skip_parenthesis Round > Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### curlies > > ── fsharp ────────────────────────────────────────────────────────────────────── > let curlies a d = (skip_parenthesis Curly Open >>. a .>> skip_parenthesis Curly > Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### squares > > ── fsharp ────────────────────────────────────────────────────────────────────── > let squares a d = (skip_parenthesis Square Open >>. a .>> skip_parenthesis > Square Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indexBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let indexBlockParsing (t : BlockParsingEnv) = t.Index > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index_setBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let index_setBlockParsing v (t : BlockParsingEnv) = t.Index <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangeBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline rangeBlockParsing exp s = > let i = indexBlockParsing s > exp s |> Result.map (fun x -> > let i' = indexBlockParsing s > if i < i' then fst s.tokens.[[i]] +. fst s.tokens.[[i'-1]], x : VSCRange > * _ > else > failwith "Compiler error: The parser passed into `range` has to > consume at least one token for it to work." > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind d = (sepBy1 ((skip_op "*" >>% RawKindStar) <|> rounds kind) > (skip_op "->") |>> List.reduceBack (fun a b -> RawKindFun (a,b))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### duplicates > > ── fsharp ────────────────────────────────────────────────────────────────────── > let duplicates er x = > let h = System.Collections.Generic.HashSet() > x |> List.choose (fun (r : VSCRange,n : string) -> if h.Add n = false then > Some(r,er) else None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indentBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline indentBlockParsing i op next d = if op i (col d) then next d else > Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_var d = (read_var_as_symbol <|> rounds read_op) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### patterns_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let patterns_validate pats = > let pos = System.Collections.Generic.Dictionary(HashIdentity.Reference) > let errors = ResizeArray() > let rec loop is_type pat = > let loop = loop is_type > let inline duplicate_var() = InvalidPattern (if is_type then > DuplicateTypeVar else DuplicateTermVar) > match pat with > | PatFilledDefaultValue _ | PatDefaultValue _ | PatValue _ | PatSymbol _ > | PatE _ | PatB _ -> Set.empty > | PatArray(_,x) -> > List.fold (fun s x -> > let x = loop x > let inters = Set.intersect s x > if Set.isEmpty inters = false then inters |> Set.iter (fun x -> > errors.Add(pos.[[x]], duplicate_var())) > s + x > ) Set.empty x > | PatExists(r,l,p) -> > if is_type then > let s = List.fold (fun s (r,x) -> pos.Add(x,r); Set.add x s) > Set.empty l > let x = loop p > let inters = Set.intersect s x > if Set.isEmpty inters = false then inters |> Set.iter (fun x -> > errors.Add(pos.[[x]], duplicate_var())) > s + x > else > loop p > | PatVar(r,x) -> > if is_type then > Set.empty > else > pos.Add(x,r) > Set.singleton x > | PatDyn(_,p) | PatAnnot (_,p,_) | PatNominal(_,_,_,p) | PatUnbox(_,_,p) > | PatWhen(_,p,_) -> loop p > | PatRecordMembers(_,items) -> > let symbols = System.Collections.Generic.HashSet() > let injects = System.Collections.Generic.HashSet() > let vars = System.Collections.Generic.HashSet() > List.iter (fun item -> > match item with > | PatRecordMembersSymbol((r,keyword),name) -> > if symbols.Add(keyword) = false then errors.Add (r, > InvalidPattern DuplicateRecordSymbol); Set.empty else loop name > | PatRecordMembersInjectVar((r,var),name) -> > if injects.Add(var) = false then errors.Add (r, > InvalidPattern DuplicateRecordInjection); Set.empty else loop name > |> Set.iter (fun x -> if vars.Add x = false then errors.Add > (pos.[[x]], duplicate_var())) > ) items > Set vars > | PatPair(_,a,b) | PatAnd(_,a,b) -> > let a, b = loop a, loop b > Set.intersect b a |> Set.iter (fun x -> errors.Add (pos.[[x]], > duplicate_var())) > a + b > | PatOr(_,a,b) -> > let a, b = loop a, loop b > let f = Set.iter (fun x -> errors.Add (pos.[[x]], InvalidPattern > DisjointOrPatternVar)) > f (a-b); f (b-a) > a > > let validate is_type = > List.fold (fun s x -> > let s' = loop is_type x > Set.intersect s' s |> Set.iter (fun x -> > errors.Add(pos.[[x]],InvalidPattern ShadowedVar)) > s + s' > ) Set.empty pats |> ignore > validate true; validate false > errors |> Seq.toList > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### join_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let join_point is_let name = function // Has the effect of removing nested join > points due to not duplicating them. > | RawJoinPoint(a,b,c,_) -> RawJoinPoint(a,b,c,name) > | x -> if is_let then RawJoinPoint(range_of_expr x, None, x, name) else x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### join_point_backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > let join_point_backend (a,b) = RawJoinPoint(range_of_expr b, Some a, b, None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unintern > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Some places need unique string refs, so this is to keep the compiler from > interning static strings. > let unintern (x : string) = System.Text.StringBuilder(x).ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### adjust_join_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec adjust_join_point is_let name x = > let dyn_if_let a = if is_let then PatDyn(range_of_pattern a, a) else a > match x with > | RawForall(r,a,b) -> RawForall(r,a,adjust_join_point is_let name b) > | RawFun(r,[[a,b]]) -> RawFun(r,[[dyn_if_let a, adjust_join_point is_let > name b]]) > | RawFun(r,l) -> > let empty = fst r, fst r > let n = unintern " arg" > let a = PatVar(empty,n) |> dyn_if_let > let b = RawMatch(empty,rawv(empty,n),l) > RawFun(r,[[a,join_point is_let name b]]) > | x -> join_point is_let name x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### adjust_join_point' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let adjust_join_point' is_let name = function > | RawForall _ | RawFun _ as x -> adjust_join_point is_let name x > | x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inl_or_let_process > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inl_or_let_process (r, (is_let, is_rec, name, foralls, pats, body)) _ = > match is_rec, name, foralls, pats with > | false, _, [[]], [[]] -> > match patterns_validate [[name]] with > | [[]] -> Result.Ok((r,name,adjust_join_point' is_let (match name with > PatVar(_,name) -> Some name | _ -> None) body),is_rec) > | ers -> Error ers > | _, PatVar(_,name'), _, _ -> > match patterns_validate (if is_rec then name :: pats else pats) with > | [[]] -> > let body = > let dyn_if_let x = if is_let then PatDyn(range_of_pattern x, x) > else x > adjust_join_point is_let (Some name') body > |> List.foldBack (fun pat body -> RawFun(range_of_pattern pat +. > range_of_expr body,[[dyn_if_let pat,body]])) pats > |> List.foldBack (fun typevar body -> RawForall(range_of_typevar > typevar +. range_of_expr body,typevar,body)) foralls > match is_rec, body with > | false, _ | true, (RawFun _ | RawForall _) -> > Result.Ok((r,name,body),is_rec) > | true, _ -> Error [[r, ExpectedFunctionAsBodyOfRecStatement]] > | ers -> Error ers > | true, _, _, _ -> Error [[range_of_pattern name, > ExpectedVarOrOpAsNameOfRecStatement]] > | false, _, _, _ -> Error [[range_of_pattern name, > ExpectedSinglePatternWhenStatementNameIsNorVarOrOp]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ho_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ho_var d : Result<HoVar,_> = rangeBlockParsing ((read_small_type_var |>> fun > x -> x, RawKindWildcard) <|> rounds ((read_small_type_var .>> skip_op ":") .>>. > kind)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### forall_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let forall_var d : Result<TypeVar,_> = (ho_var .>>. (curlies (sepBy > (read_small_type_var' <|> rounds read_op_type) (skip_op ";")) <|>% [[]])) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### forall > > ── fsharp ────────────────────────────────────────────────────────────────────── > let forall d = > (skip_keyword SpecForall >>. many1 forall_var .>> skip_op "." > >>= fun q _ -> > let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint > l) > let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates > DuplicateForallVar > match List.append x x' with [[]] -> Result.Ok q | er -> Result.Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_exists' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_exists' d = > (skip_keyword SpecExists >>. many (rangeBlockParsing read_small_type_var) > .>> skip_op "." > >>= fun q _ -> > match duplicates DuplicateExistsVar q with [[]] -> Result.Ok q | er -> > Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### exists > > ── fsharp ────────────────────────────────────────────────────────────────────── > let exists d = > (skip_keyword SpecExists >>. many forall_var .>> skip_op "." > >>= fun q _ -> > let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint > l) > let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates > DuplicateExistsVar > match List.append x x' with [[]] -> Result.Ok q | er -> Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### annotated_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline annotated_body sep exp ty = > pipe2 (opt (skip_op ":" >>. ty)) > (skip_op sep .>>. opt exp) > (fun a (r,b) -> > let b = match b with Some b -> b | None -> RawMissingBody r > match a with > | Some a -> RawAnnot(range_of_expr b +. range_of_texpr a,b,a) > | None -> b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline inl_or_let exp pattern ty = > rangeBlockParsing (tuple6 ((skip_keyword SpecInl >>% false) <|> > (skip_keyword SpecLet >>% true)) > ((skip_keyword SpecRec >>% true) <|>% false) pattern > (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty)) > >>= inl_or_let_process > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### and_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline and_inl_or_let exp pattern ty = > rangeBlockParsing (tuple6 (skip_keyword SpecAnd >>. ((skip_keyword SpecInl > >>% false) <|> (skip_keyword SpecLet >>% true))) > (fun _ -> Result.Ok true) pattern > (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty)) > >>= inl_or_let_process > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Associativity > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Associativity = FParsec.Associativity > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inbuilt_operators > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inbuilt_operators x = > match x with > | "+" -> ValueSome(60, Associativity.Left) > | "-" -> ValueSome(60, Associativity.Left) > | "*" -> ValueSome(70, Associativity.Left) > | "/" -> ValueSome(70, Associativity.Left) > | "%" -> ValueSome(70, Associativity.Left) > | "|>" -> ValueSome(10, Associativity.Left) > | ">>" -> ValueSome(10, Associativity.Left) > | "<-" -> ValueSome(4, Associativity.Left) > > | "<=" -> ValueSome(40, Associativity.None) > | "<" -> ValueSome(40, Associativity.None) > | "=" -> ValueSome(40, Associativity.None) > | "`=" -> ValueSome(40, Associativity.None) > | ">" -> ValueSome(40, Associativity.None) > | ">=" -> ValueSome(40, Associativity.None) > | "<>" -> ValueSome(40, Associativity.None) > | "<<<" -> ValueSome(40, Associativity.None) > | ">>>" -> ValueSome(40, Associativity.None) > | "&&&" -> ValueSome(40, Associativity.None) > | "|||" -> ValueSome(40, Associativity.None) > > | "||" -> ValueSome(20, Associativity.Right) > | "&&" -> ValueSome(30, Associativity.Right) > | "::" -> ValueSome(50, Associativity.Right) > | "^" -> ValueSome(45, Associativity.Right) > | "<|" -> ValueSome(10, Associativity.Right) > | "<<" -> ValueSome(10, Associativity.Right) > | "." -> ValueSome(2, Associativity.Right) > | "," -> ValueSome(6, Associativity.Right) > | ":>" -> ValueSome(35, Associativity.Right) > | ":?>" -> ValueSome(35, Associativity.Right) > | "**" -> ValueSome(80, Associativity.Right) > | _ -> ValueNone > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### precedence_associativity > > ── fsharp ────────────────────────────────────────────────────────────────────── > // The `.` operator has special behavior similar to F#. > let rec precedence_associativity name = > if 0 < String.length name then > if 1 < String.length name && name.[[0]] = '.' then > precedence_associativity name.[[1..]] > else > match inbuilt_operators name with > | ValueNone -> precedence_associativity (name.[[0..name.Length-2]]) > | v -> v > else ValueNone > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let op (d : BlockParsingEnv) = > rangeBlockParsing read_op d |> Result.bind (fun (o,x) -> > match x with > | "=>" | "|" | ":" | ";" -> skip' d -1; Error [[]] // Separators get > special handling for sake of better error messages. > | _ -> > match precedence_associativity x with // TODO: Might be good to > memoize this. > | ValueNone -> Error [[o, UnknownOperator]] > | ValueSome(p,a) -> > let inline f on_succ = Ok(p,a,fun (a,b) -> > let ra, rb = range_of_expr a, range_of_expr b > let r = ra +. rb > on_succ(r,a,b) > ) > match x with > | "." -> f RawSeq > | "&&" -> f (fun (r,a,b) -> RawIfThenElse(r,a,b,RawLit(o,LitBool > false))) > | "||" -> f (fun (r,a,b) -> RawIfThenElse(r,a,RawLit(o,LitBool > true),b)) > | "," -> f RawPair > | "<-" -> f (fun (r,a,c) -> > let rec loop l = function > | RawApply(_,a,b) -> loop (b :: l) a > | a -> a, l > let a,b = loop [[]] a > RawHeapMutableSet(r,a,b,c) > ) > | x -> f (fun (r,a,b) -> RawApply(r,RawApply(r +. > o,rawv(o,x),a),b)) > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_to_op_dict > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_to_op_dict : Dictionary<string,Op> = > System.Collections.Generic.Dictionary(HashIdentity.Structural) > > ── fsharp ────────────────────────────────────────────────────────────────────── > Microsoft.FSharp.Reflection.FSharpType.GetUnionCases(typeof<Op>) > |> Array.iter (fun x -> string_to_op_dict.[[x.Name]] <- > Microsoft.FSharp.Reflection.FSharpValue.MakeUnion(x,[[||]]) :?> Op) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_to_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_to_op x = string_to_op_dict.TryGetValue x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### symbol_paired_concat > > ── fsharp ────────────────────────────────────────────────────────────────────── > let symbol_paired_concat k = > let b = System.Text.StringBuilder() > List.iter (fun (_, x : string) -> b.Append(x).Append('_') |> ignore) k > b.ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openBlockParsing = rangeBlockParsing ((skip_keyword SpecOpen >>. > read_small_var') .>>. (many read_symbol)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bar i d = indentBlockParsing i (<=) (skip_op "|") d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_pair > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pat_pair next = > sepBy1 next (skip_op ",") > |>> List.reduceBack (fun a b -> PatPair(range_of_pattern a +. > range_of_pattern b,a,b)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RootTypeFlags > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RootTypeFlags = { > allow_typecase_metavars : bool > allow_term : bool > allow_wildcard : bool > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### root_type_defaults > > ── fsharp ────────────────────────────────────────────────────────────────────── > let root_type_defaults = { > allow_typecase_metavars = false > allow_term = false > allow_wildcard = false > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bottom_up_number > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bottom_up_number (default_env : DefaultEnv) (r : VSCRange,x : string) = > let inline f string_to_val val_to_lit val_dsc = > match string_to_val x with > | true, x -> Ok(r, val_to_lit x) > | false, _ -> Error [[r, BottomUpNumberParseError(x,val_dsc)]] > if x.Contains '.' then > match default_env.default_float with > | Float32T -> f System.Single.TryParse LitFloat32 "f32" > | Float64T -> f System.Double.TryParse LitFloat64 "f64" > | x -> failwithf "Compiler error: Invalid default float type. Got: %A" x > else > match default_env.default_int with > | Int8T -> f System.SByte.TryParse LitInt8 "i8" > | Int16T -> f System.Int16.TryParse LitInt16 "i16" > | Int32T -> f System.Int32.TryParse LitInt32 "i32" > | Int64T -> f System.Int64.TryParse LitInt64 "i64" > | UInt8T -> f System.Byte.TryParse LitUInt8 "u8" > | UInt16T -> f System.UInt16.TryParse LitUInt16 "u16" > | UInt32T -> f System.UInt32.TryParse LitUInt32 "u32" > | UInt64T -> f System.UInt64.TryParse LitUInt64 "u64" > | x -> failwithf "Compiler error: Invalid default int type. Got: %A" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typecase_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typecase_validate x _ = > let metavars = System.Collections.Generic.HashSet() > let vars = System.Collections.Generic.HashSet() > let errors = ResizeArray() > let rec f = function > | RawTFilledNominal _ | RawTTerm _ | RawTTypecase _ -> failwith > "Compiler error: This case is not supposed to appear in typecase." > | RawTForall(r,_,_) -> errors.Add(r,ForallNotAllowedInTypecase) > | RawTExists(r,_,_) -> errors.Add(r,ExistsNotAllowedInTypecase) > | RawTLit _ | RawTPrim _ | RawTSymbol _ | RawTB _ | RawTWildcard _ -> () > | RawTMetaVar(r,a) -> if vars.Contains(a) then > errors.Add(r,MetavarShadowedByVar) else metavars.Add(a) |> ignore > | RawTVar(r,a) -> if metavars.Contains(a) then > errors.Add(r,VarShadowedByMetavar) else vars.Add(a) |> ignore > | RawTApply(_,a,b) | RawTFun(_,a,b,_) | RawTPair(_,a,b) -> f a; f b > | RawTLayout(_,a,_) | RawTArray(_,a) -> f a > | RawTUnion(_,a,_,_) -> Map.iter (fun _ x -> f (snd x)) a > | RawTRecord(_,a) -> Map.iter (fun _ -> f) a > | RawTMacro(_,a) -> a |> List.iter (function RawMacroType(_,a) -> f a | > _ -> ()) > f x > if 0 < errors.Count then Error (Seq.toList errors) else Ok(x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### expr_tight > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses an expression only if it is directly next to the previous one. > let inline expr_tight next (d: BlockParsingEnv) = > let i = indexBlockParsing d > if 0 < i && i < d.tokens.Length then > let r,r' = snd (fst d.tokens.[[i-1]]), fst (fst d.tokens.[[i]]) > if r.line = r'.line && r.character = r'.character then next d else Error > [[]] > else Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_default_value' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline read_default_value' f d = > try_current d <| function > | p, TokDefaultValue t' -> skipBlockParsing d; f (p,t') > | p, _ -> Error [[p, ExpectedLit]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_default_value > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline read_default_value on_top on_bot d = > read_default_value' (fun (p,t') -> > if d.is_top_down then Ok(on_top (p,t')) > else bottom_up_number d.default_env (p,t') |> Result.map on_bot > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_string = tuple3 skip_string_open ((read_text false |>> snd) <|>% "") > skip_string_close > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_var d = (read_small_var' |>> PatVar) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_list_pair > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_list_pair r a b = PatUnbox(r,"Cons",PatPair(r,a,b)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### root_pattern_var_nominal_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec root_pattern_var_nominal_union s = > (read_var' >>= fun (r,a,re) s -> > if System.Char.IsUpper(a,0) then > (opt root_pattern_var |>> fun b -> > re SemanticTokenLegend.symbol > let b = match b with Some b -> b | None -> PatE r > PatUnbox(r,a,b) > ) s > else > (many (expr_tight read_symbol) >>= fun syms s -> > match syms with > | [[]] -> > (opt root_pattern_var |>> fun b -> > match b with > | Some b -> > re SemanticTokenLegend.type_variable > PatNominal(r +. range_of_pattern b,(r,a),syms,b) > | None -> > PatVar(r,a) > ) s > | _ -> > (root_pattern_var |>> fun b -> > re SemanticTokenLegend.type_variable > PatNominal(r +. range_of_pattern b,(r,a),syms,b) > ) s > ) s > ) s > and root_pattern_wildcard d = (skip_keyword' SpecWildcard |>> PatE) d > and root_pattern_dyn d = (rangeBlockParsing (skip_unary_op "~" >>. > root_pattern_var) |>> PatDyn) d > and root_pattern_record d = > let pat_record_item = > let inj = skip_unary_op "$" >>. read_small_var' |>> fun a -> > PatRecordMembersInjectVar,a > let var = rangeBlockParsing record_var |>> fun a -> > PatRecordMembersSymbol,a > ((inj <|> var) .>>. (opt (skip_op "=" >>. root_pattern_pair))) > |>> fun ((f,a),b) -> f (a, defaultArg b (PatVar a)) > (rangeBlockParsing (curlies (many pat_record_item)) |>> PatRecordMembers) d > and root_pattern_type s = > pipe2 root_pattern (opt (skip_op ":" >>. root_type_annot)) > (fun a -> function Some b -> PatAnnot(range_of_pattern a +. > range_of_texpr b,a,b) | None -> a) s > and root_pattern_rounds d = > (rangeBlockParsing (rounds ((((read_op' |>> PatVar) <|> root_pattern_type) > |>> fun x _ -> x) <|>% PatB)) > |>> fun (r,x) -> x r) d > and pat_array s = (skip_unary_op ";" >>. rangeBlockParsing (squares (sepBy > root_pattern_type (skip_op ";"))) |>> fun (r,x) -> PatArray(r,x)) s > and pat_list s = > (rangeBlockParsing (squares (sepBy root_pattern_type (skip_op ";"))) > |>> fun ((r,_),x) -> let r = r,r in List.foldBack (pat_list_pair r) x > (PatUnbox(r,"Nil",PatB r))) s > and pat_exists s = (rangeBlockParsing (pat_exists' .>>. root_pattern) |>> fun > (r,(l,b)) -> PatExists(r,l,b)) s > and root_pattern s = > let body s = > let pat_value = (read_value |>> PatValue) <|> (read_default_value > PatDefaultValue PatValue) > let pat_string = read_string |>> (fun (a,x,b) -> PatValue(a +. > b,LitString x)) > let pat_symbol = read_symbol |>> PatSymbol > let (+) = alt (indexBlockParsing s) > (root_pattern_rounds + root_pattern_var_nominal_union + > root_pattern_wildcard + root_pattern_dyn + pat_value + pat_string > + root_pattern_record + pat_symbol + pat_array + pat_list + pat_exists) > s > > let pat_and = sepBy1 body (skip_op "&") |>> List.reduce (fun a b -> > PatAnd(range_of_pattern a +. range_of_pattern b,a,b)) > let pat_pair = pat_pair pat_and > let pat_cons = rangeBlockParsing (sepBy1 pat_pair (skip_op "::")) |>> fun > (r,x) -> List.reduceBack (pat_list_pair r) x > let pat_or = sepBy1 pat_cons (skip_op "|") |>> List.reduce (fun a b -> > PatOr(range_of_pattern a +. range_of_pattern b,a,b)) > let pat_as = pat_or .>>. (opt (skip_keyword SpecAs >>. pat_or )) |>> > function a, Some b -> PatAnd(range_of_pattern a +. range_of_pattern b,a,b) | a, > None -> a > pat_as s > and root_pattern_when d = (root_pattern .>>. (opt (skip_keyword SpecWhen >>. > root_term)) |>> function a, Some b -> PatWhen(range_of_pattern a +. > range_of_expr b,a,b) | a, None -> a) d > and root_pattern_var d = > let (+) = alt (indexBlockParsing d) > (pat_var + root_pattern_wildcard + root_pattern_dyn + root_pattern_rounds + > root_pattern_record + pat_array + pat_list + pat_exists) d > and root_pattern_pair d = pat_pair root_pattern_var d > and root_type_annot d = root_type {root_type_defaults with > allow_term=d.is_top_down=false; allow_wildcard=d.is_top_down} d > and root_type_record (flags : RootTypeFlags) d = > (rangeBlockParsing (curlies (sepBy ((rangeBlockParsing record_var .>> > skip_op ":") .>>. root_type flags) (optional (skip_op ";")))) > >>= fun (r,x) _ -> > x |> List.map fst |> duplicates DuplicateRecordTypeVar > |> function [[]] -> Ok(RawTRecord(r,x |> List.mapi (fun i ((_,n),x) -> > (i,n),x) |> Map.ofList)) | er -> Error er > ) d > and root_type_union (flags : RootTypeFlags) d = > let bar = bar (col d) > let vanilla = skip_op ":" >>. root_type flags |>> fun x -> Some (false, x) > let gadt = > skip_op "::" > >>. pipe2 (opt forall) (root_type flags) (Option.foldBack (List.foldBack > (fun a b -> RawTForall(range_of_typevar a +. range_of_texpr b,a,b)))) > |>> fun x -> Some (true, x) > > let body = vanilla <|> gadt <|>% None > (rangeBlockParsing (optional bar >>. sepBy1 (rangeBlockParsing > read_big_var_as_symbol .>>. body) bar) > >>= fun (r,x) _ -> > x |> List.map fst |> duplicates DuplicateUnionKey > |> function > | [[]] -> Ok(r,x |> List.mapi (fun i ((r,n),x) -> (i,n), match x > with Some x -> x | None -> false, RawTB r) |> Map.ofList) > | er -> Error er > ) d > and root_type (flags : RootTypeFlags) d = > let next = root_type flags > let cases d = > let wildcard d = if flags.allow_wildcard then (skip_keyword' > SpecWildcard |>> RawTWildcard) d else Error [[]] > // This metavar case only occurs in typecase during the bottom-up > segment. It should not be confused with metavars during top-down type inference. > let metavar d = if flags.allow_typecase_metavars then (skip_unary_op "~" > >>. read_var' |>> fun (a,b,r) -> r SemanticTokenLegend.type_variable; > RawTMetaVar(a,b)) d else Error [[]] > let term d = if flags.allow_term then (rangeBlockParsing (skip_unary_op > "`" >>. ((read_var'' |>> rawv) <|> rounds root_term)) |>> RawTTerm) {d with > is_top_down=false} else Error [[]] > let symbol = read_symbol |>> RawTSymbol > let record = root_type_record flags > let lit = (read_value |>> RawTLit) <|> (read_string |>> fun (a,b,c) -> > RawTLit(a +. c, LitString b)) > let lit_default = read_default_value' (bottom_up_number d.default_env >> > Result.map RawTLit) > let var = read_var' |>> fun (o,x,r) -> > r SemanticTokenLegend.type_variable > RawTVar(o, x) > let rounds = > rangeBlockParsing (rounds ((next |>> fun x _ -> x) <|>% RawTB)) > |>> fun (r,x) -> x r > let macro = > let read_macro_expression s = > (macro_expression MType (root_type root_type_defaults |>> fun x > -> RawMacroType(range_of_texpr x,x)) > <|> macro_expression MTypeLit (root_type root_type_defaults |>> > fun x -> RawMacroTypeLit(range_of_texpr x,x))) s > let body = many ((read_text false |>> RawMacroText) <|> > read_macro_type_var <|> read_macro_expression) > pipe3 skip_macro_open body skip_macro_close (fun a l b -> > RawTMacro(a +. b, l)) > let exists = rangeBlockParsing (exists .>>. root_type flags) |>> fun > (r,(l,b)) -> RawTExists(r,l,b) > let foralls = rangeBlockParsing (forall .>>. root_type flags) |>> (fun > (r,(l,b)) -> List.foldBack (fun a b -> RawTForall(range_of_typevar a +. > range_of_texpr b,a,b)) l b) > let (+) = alt (indexBlockParsing d) > (rounds + lit + lit_default + wildcard + term + metavar + var + record + > symbol + macro + exists + foralls) d > > let fold_applies a b = List.fold (fun a b -> RawTApply(range_of_texpr a +. > range_of_texpr b,a,b)) a b > let apply_tight d = pipe2 cases (many (expr_tight cases)) fold_applies d > let apply d = pipe2 apply_tight (many (indentBlockParsing (col d) (<) > apply_tight)) fold_applies d > > let pairs = sepBy1 apply (skip_op "*") |>> List.reduceBack (fun a b -> > RawTPair(range_of_texpr a +. range_of_texpr b,a,b)) > let functions = sepBy1 pairs (skip_op "->") |>> List.reduceBack (fun a b -> > RawTFun(range_of_texpr a +. range_of_texpr b,a,b,FT_Vanilla)) > > functions d > > and root_term d = > let rec expressions d = > let next = root_term > let case_var = read_var'' |>> rawv > let case_value = read_value |>> RawLit > let case_exists = > let sequence_type d = (many (indentBlockParsing (col d) (=) (sepBy1 > (root_type root_type_defaults) (skip_op ";"))) |>> List.concat) d > ((skip_keyword' SpecExists) .>>. (opt (squares sequence_type)) .>>. > next) > >>= fun ((r,type_vars),body) d -> > if d.is_top_down || Option.isSome type_vars > then Ok(RawExists(r +. range_of_expr body, (r, > type_vars), body)) > else Error [[r, TypeVarsNeedToBeExplicitForExists]] > let case_rounds = > rangeBlockParsing (rounds ((((read_op' |>> rawv) <|> next) |>> fun x > _ -> x) <|>% RawB)) > |>> fun (r,x) -> x r > let case_fun = > (skip_keyword SpecFun >>. many1 root_pattern_pair .>>. > (annotated_body "=>" next root_type_annot)) > >>= fun (pats, body) _ -> > match patterns_validate pats with > | [[]] -> List.foldBack (fun pat body -> RawFun(range_of_pattern > pat +. range_of_expr body,[[pat,body]])) pats body |> Ok > | ers -> Error ers > > let case_forall d = > if d.is_top_down then Error [[]] else > (tuple3 forall (many root_pattern_pair) (annotated_body "=>" > next root_type_annot) > >>= fun (foralls : TypeVar list, pats, body) _ -> > match patterns_validate pats with > | [[]] -> > List.foldBack (fun pat body -> RawFun(range_of_pattern > pat +. range_of_expr body,[[pat,body]])) pats body > |> List.foldBack (fun a body -> > RawForall(range_of_typevar a +. range_of_expr body,a,body)) foralls |> Ok > | ers -> Error ers) d > > let case_default_value = read_default_value RawDefaultLit RawLit > let case_if_then_else d = > let i = col d > let inline f' keyword = rangeBlockParsing (skip_keyword keyword >>. > next) > let inline f keyword = indentBlockParsing i (<=) (f' keyword) > (pipe4 (f' SpecIf) (f SpecThen) (many (f SpecElif .>>. f SpecThen)) > (opt (f SpecElse)) > (fun cond tr elifs fl -> > let f cond tr = function > | Some fl -> fst fl, RawIfThenElse(fst cond +. fst > fl,snd cond,snd tr,snd fl) > | None -> fst tr, RawIfThen(fst cond +. fst tr,snd > cond,snd tr) > let fl = List.foldBack (fun (cond,tr) fl -> f cond tr fl |> > Some) elifs fl > f cond tr fl |> snd)) d > > let case_match = > let clauses d = > let bar = bar (col d) > (optional bar >>. sepBy1 (root_pattern_when .>>. (skip_op "=>" > >>. next)) bar > >>= fun l _ -> > match l |> List.collect (fun (a,_) -> patterns_validate > [[a]]) with > | [[]] -> Ok l > | e -> Error e > ) d > > (rangeBlockParsing (skip_keyword SpecFunction >>. clauses) |>> > RawFun) > <|> (rangeBlockParsing ((skip_keyword SpecMatch >>. next .>> > skip_keyword SpecWith) .>>. clauses) |>> fun (a,(b,c)) -> RawMatch(a,b,c)) > > let case_typecase d = > let clauses d = > let bar = bar (col d) > let typecase = root_type {root_type_defaults with > allow_typecase_metavars=true; allow_wildcard=true} >>= typecase_validate > (optional bar >>. sepBy1 (typecase .>>. (skip_op "=>" >>. next)) > bar) d > > if d.is_top_down then Error [[]] else > (rangeBlockParsing ((skip_keyword SpecTypecase >>. root_type > {root_type_defaults with allow_term=true} .>> skip_keyword SpecWith) .>>. > clauses) > |>> fun (r, (a, b)) -> RawTypecase(r,a,b)) d > > let case_record = > let create = skip_op "=" >>. next > let modify = skip_op "#=" >>. next > let var = rangeBlockParsing record_var > let inject = skip_unary_op "$" >>. rangeBlockParsing read_small_var > let record_create_body = > (var .>>. opt create |>> function (a,Some b) -> > RawRecordWithSymbol(a,b) | (a,None) -> RawRecordWithSymbol(a,rawv a)) > <|> (inject .>>. create |>> RawRecordWithInjectVar) > let record_create = rangeBlockParsing (curlies (sepBy > record_create_body (optional (skip_op ";")))) |>> fun (r,withs) -> > (r,[[]],withs,[[]]) > let record_with_bodies = > (var >>= fun a -> > ((modify |>> fun b -> RawRecordWithSymbolModify(a,b)) > <|> (opt create |>> function Some b -> > RawRecordWithSymbol(a,b) | None -> RawRecordWithSymbol(a,rawv a)))) > <|> (inject >>= fun a -> > ((modify |>> fun b -> RawRecordWithInjectVarModify(a,b)) > <|> (create |>> fun b -> RawRecordWithInjectVar(a,b)))) > let record_without_bodies = (var |>> RawRecordWithoutSymbol) <|> > (inject |>> RawRecordWithoutInjectVar) > let record_with = > rangeBlockParsing > (curlies > (tuple4 read_small_var' > (many ((read_symbol |>> RawSymbol) <|> (skip_op "$" > >>. read_small_var' |>> rawv))) > ((skip_keyword SpecWith >>. sepBy record_with_bodies > (optional (skip_op ";"))) <|>% [[]]) > ((skip_keyword SpecWithout >>. many > record_without_bodies) <|>% [[]]))) > |>> fun (r,(name, acs, withs, withouts)) -> (r,rawv name :: > acs,withs,withouts) > > restore 2 record_create <|> record_with > >>= fun (_,_,withs,withouts as x) _ -> > [[ > withs |> List.choose (function RawRecordWithSymbol(a,_) | > RawRecordWithSymbolModify(a,_) -> Some a | _ -> None) |> duplicates > DuplicateTermRecordSymbol > withs |> List.choose (function RawRecordWithInjectVar(a,_) | > RawRecordWithInjectVarModify(a,_) -> Some a | _ -> None) |> duplicates > DuplicateTermRecordInjection > withouts |> List.choose (function RawRecordWithoutSymbol(a,b) -> > Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordSymbol > withouts |> List.choose (function RawRecordWithoutInjectVar(a,b) > -> Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordInjection > ]] |> List.concat |> function [[]] -> Ok(RawRecordWith x) | er > -> Error er > > let case_join_point = skip_keyword SpecJoin >>. next |>> join_point true > None > let case_join_point_backend = skip_keyword SpecJoinBackend >>. > (read_big_var_as_keyword .>>. next) |>> join_point_backend > let case_real = skip_keyword SpecReal >>. (fun d -> next {d with > is_top_down=false}) |>> fun x -> RawReal(range_of_expr x,x) > let case_symbol = read_symbol |>> RawSymbol > let case_list = rangeBlockParsing (squares sequence_body) >>= fun (r,l) > d -> > if d.is_top_down then > let r = fst r, fst r > List.foldBack (fun a b -> > RawApply(r,rawv(r,unintern "Cons"),RawPair(r,a,b)) > ) l (rawv(r,unintern "Nil")) |> Ok > else > Error [[r, ListLiteralsNotAllowedInBottomUp]] > > let case_string = read_string |>> fun (a, x, b) -> RawLit(a +. > b,LitString x) > > let case_macro = > let read_macro_expression s = > (macro_expression MTerm (root_term |>> fun x -> > RawMacroTerm(range_of_expr x,x)) > <|> macro_expression MType (root_type root_type_defaults |>> fun > x -> RawMacroType(range_of_texpr x,x)) > <|> macro_expression MTypeLit (root_type root_type_defaults |>> > fun x -> RawMacroTypeLit(range_of_texpr x,x))) s > let body = many ((read_text true |>> RawMacroText) <|> > read_macro_var <|> read_macro_expression) > pipe3 skip_macro_open body skip_macro_close (fun a l b -> RawMacro(a > +. b, l)) > > let (+) = alt (indexBlockParsing d) > > (case_value + case_default_value + case_var + case_join_point + > case_join_point_backend + case_real + case_symbol > + case_typecase + case_match + case_typecase + case_rounds + case_list + > case_record > + case_if_then_else + case_fun + case_forall + case_string + case_macro > + case_exists) d > > and application_tight d = > let next = expressions > pipe2 next (many (expr_tight next)) (List.fold (fun a b -> > RawApply(range_of_expr a +. range_of_expr b,a,b))) d > > and sequence_body d = (many (indentBlockParsing (col d) (=) (sepBy1 > operators (skip_op ";"))) |>> List.concat) d > and unary_op d = > let next = application_tight > let f = > read_unary_op' >>= fun (o,a) d -> > let type_expr d = > choice [[| > read_small_type_var' |>> RawTVar > read_value |>> RawTLit > read_string |>> fun (a,b,c) -> RawTLit(a +. c, LitString > b) > rounds (root_type {root_type_defaults with > allow_term=true}) > |]] d > let term_expr d = > choice [[| > read_var'' |>> rawv > read_value |>> RawLit > read_default_value RawDefaultLit RawLit > read_string |>> fun (a,b,c) -> RawLit(a +. c, LitString > b) > rounds root_term > |]] d > match a with > | ";" -> > if d.is_top_down then (rangeBlockParsing (squares > sequence_body) |>> fun (r,x) -> RawApply(o,RawV(o,unintern "array",true), > RawArray(o,x))) d > else Error [[o, ArrayLiteralsNotAllowedInBottomUp]] > | "!!!!" -> > (rangeBlockParsing (read_big_var .>>. (rounds (sepBy (fun d > -> unary_op {d with is_top_down=false}) (skip_op ",")))) > >>= fun (r,((ra,a), b)) _ -> > match string_to_op a with > | true, op' -> Ok(RawOp(r,op',b)) > | false, _ -> Error [[ra,InbuiltOpNotFound]]) d > | "`" -> if d.is_top_down then Error [[]] else > (rangeBlockParsing type_expr |>> RawType) d > | "`@" -> > if d.is_top_down then Error [[]] else > (rangeBlockParsing term_expr |>> fun (r,x) -> > let r' = o +. r > RawType(r', > RawTTerm(r',RawOp(r',LitToTypeLit,[[x]]))) > ) d > | "``" -> if d.is_top_down then Error [[]] else > (rangeBlockParsing type_expr |>> fun (r,x) -> RawOp(o +. > r,TypeToVar,[[RawType(r,x)]])) d > | "`$" -> (read_var'' |>> fun (r,x) -> RawV(r,x,false)) d > | _ -> (next |>> fun b -> RawApply(o +. range_of_expr b,rawv(o, > "~" + a),b)) d > (f <|> next) d > > and application (d: BlockParsingEnv) = > let next = unary_op > pipe2 next (many (indentBlockParsing (col d) (<) next)) (List.fold (fun > a b -> RawApply(range_of_expr a +. range_of_expr b,a,b))) d > > and operators d = > let term = application > let i = col d > let op = indentBlockParsing i (<=) op > > /// Pratt parser > let rec led left (prec,asoc,m) d = > match asoc with > | Associativity.Right -> (tdop (prec-1) |>> fun right -> m (left, > right)) d > | _ -> (tdop prec |>> fun right -> m (left, right)) d > > and tdop rbp d = > let rec loop left d = > ((op >>= fun (prec,_,_ as v) d -> > if rbp < prec then (led left v >>= loop) d > else skip' d -1; Error [[]]) <|>% left) d > (term >>= loop) d > > pipe2 (tdop System.Int32.MinValue) > (opt (indentBlockParsing i (<=) (skip_op ":" >>. root_type_annot))) > (fun a -> function Some b -> RawAnnot(range_of_expr a +. > range_of_texpr b,a,b) | _ -> a) > d > > let statements d = > let next = operators > let inl_or_let = > (inl_or_let root_term root_pattern_pair root_type_annot .>>. many > (and_inl_or_let root_term root_pattern_pair root_type_annot)) > >>= fun x _ -> > match x with > | ((r,name,body),false), [[]] -> Ok(fun on_succ -> > RawMatch(r,body,[[name,on_succ]])) > | ((_,_,_),false), l -> l |> List.map (fun ((r,_,_),_) -> r, > UnexpectedAndInlRec) |> Error > | x, xs -> > let l = x :: xs |> List.map (function > | (r,PatVar(o,name),body),true -> r, ((o,name), body) > | _ -> failwith "Compiler error: Recursive inl/let > statements should always have PatVar for names and should always be recursive." > ) > let r = l |> List.map fst |> List.reduce (+.) > l |> List.map (snd >> fst) > |> duplicates DuplicateRecFunctionName > |> function [[]] -> Ok(fun on_succ -> RawRecBlock(r, > List.map snd l, on_succ)) | er -> Error er > let module_open = module_openBlockParsing |>> fun (r,(name,acs)) on_succ > -> RawOpen(r,name,acs,on_succ) > let statement_parsers d = > let (+) = alt (indexBlockParsing d) > (inl_or_let + module_open) d > > let i = col d > let inline if_ x = indentBlockParsing i x > let stmts = > many1 (if_ (=) (rangeBlockParsing statement_parsers)) .>>. opt ((if_ > (<=) (skip_keyword SpecIn) >>. root_term) <|> if_ (=) next) > >>= fun (a,b) _ -> match b with Some b -> Ok(a,b) | None -> Error > [[List.last a |> fst, ExpectedExpression]] > let expr = if_ (=) next |>> fun x -> [[]],x > (many1 (stmts <|> expr) > |>> fun x -> > List.foldBack (fun (stmts,expr) s -> > let process_statements s = List.foldBack (fun (_,a) b -> a b) > stmts s > match s with > | ValueNone -> ValueSome (process_statements expr) > | ValueSome expr' -> ValueSome (process_statements > (RawSeq(range_of_expr expr +. range_of_expr expr',expr,expr'))) > ) x ValueNone |> ValueOption.get > ) d > > statements d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### comments > > ── fsharp ────────────────────────────────────────────────────────────────────── > let comments (s : BlockParsingEnv) = > let line_near_to = lineBlockParsing s > let rec loop line d = > if 0 <= line then > match s.comments.[[line]] with > | Some(r,text) -> > let text = text.TrimEnd() > loop (line-1) ((if text = "" then "\n" else text + " ") :: d) > | _ -> d > else d > loop (line_near_to-1) [[]] > |> String.concat "" > |> fun x -> Ok(x.TrimEnd()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Comments > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Comments = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TopStatement > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] TopStatement = > | TopAnd of VSCRange * TopStatement > | TopInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | TopRecInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | TopNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopNominalRec of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopPrototype of Comments * VSCRange * (VSCRange * VarString) * (VSCRange * > VarString) * TypeVar list * RawTExpr > | TopInstance of VSCRange * (VSCRange * VarString) * (VSCRange * VarString) > * TypeVar list * RawExpr > | TopOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) > list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_inl_or_let_process > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_inl_or_let_process comments is_top_down = function > | (r,PatVar(r',name),body),is_rec -> > let rec loop = function > | RawAnnot(r,body,t) -> loop body > | RawForall _ | RawFun _ -> > if is_rec then > Ok(TopRecInl(comments,r,(r',name),body,is_top_down)) > else Ok(TopInl(comments,r,(r',name),body,is_top_down)) > | _ -> Error [[r, ExpectedGlobalFunction]] > loop body > | (_,x,_),_ -> Error [[range_of_pattern x, > ExpectedVarOrOpAsNameOfGlobalStatement]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_inl_or_let d = ((comments .>>. inl_or_let root_term root_pattern_pair > root_type_annot) >>= fun (comments,x) d -> top_inl_or_let_process comments > d.is_top_down x) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_union (r,(layout,n,a,(r',b))) _ = > let this = (RawTVar n,a) ||> List.fold (fun s x -> > RawTApply(r',s,RawTVar(r',hovar_name x))) > match layout with > | UHeap -> Ok(TopNominalRec(r,n,a,RawTUnion(r',b,layout,this))) > | UStack -> Ok(TopNominal(r,n,a,RawTUnion(r',b,layout,this))) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### union_clauses > > ── fsharp ────────────────────────────────────────────────────────────────────── > let union_clauses d = root_type_union root_type_defaults d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_union d = ((rangeBlockParsing (tuple4 (skip_keyword SpecUnion >>. > ((skip_keyword SpecRec >>% UHeap) <|>% UStack)) read_small_type_var' (many > ho_var .>> skip_op "=") union_clauses)) >>= process_union) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_nominal d = > (rangeBlockParsing (tuple3 (skip_keyword SpecNominal >>. > read_small_type_var') (many ho_var .>> skip_op "=") (root_type > {root_type_defaults with allow_term=true})) > |>> fun (r,(n,a,b)) -> TopNominal(r,n,a,b)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_forall > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline type_forall next d = (pipe2 (forall <|>% [[]]) next (List.foldBack > (fun x s -> RawTForall(range_of_typevar x +. range_of_texpr s,x,s)))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_prototype > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_prototype d = > (rangeBlockParsing > (tuple5 comments > (skip_keyword SpecPrototype >>. (read_small_var' <|> rounds > read_op')) read_small_type_var' (many forall_var) > (skip_op ":" >>. type_forall (root_type root_type_defaults))) > |>> fun (r,(com,a,b,c,d)) -> TopPrototype(com,r,a,b,c,d)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_instance > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_instance d = > (rangeBlockParsing > (tuple4 (skip_keyword SpecInstance >>. (read_small_var' <|> rounds > read_op')) read_small_type_var' (many forall_var) (skip_op "=" >>. root_term)) > >>= fun (r,(prototype_name, nominal_name, nominal_foralls, body)) _ -> > Ok(TopInstance(r,prototype_name,nominal_name,nominal_foralls,body)) > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_type d = (rangeBlockParsing (tuple3 (skip_keyword SpecType >>. > read_small_type_var') (many ho_var) (skip_op "=" >>. root_type > root_type_defaults)) |>> fun (r,(a,b,c)) -> TopType(r,a,b,c)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_and_inl_or_let d = > (comments .>>. restore 1 (rangeBlockParsing (and_inl_or_let root_term > root_pattern_pair root_type_annot)) > >>= fun (comments,(r,x)) d -> top_inl_or_let_process comments d.is_top_down > x |> Result.map (fun x -> TopAnd(r,x))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline top_and f = restore 1 (rangeBlockParsing (skip_keyword SpecAnd >>. > f)) |>> TopAnd > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_and_union d = top_and ((rangeBlockParsing (tuple4 (skip_keyword > SpecUnion >>% UHeap) read_small_type_var' (many ho_var .>> skip_op "=") > union_clauses)) >>= process_union) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_open d = (module_openBlockParsing |>> fun (r,(name,acs)) -> > TopOpen(r,name,acs)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_statement > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_statement s = > let (+) = alt (indexBlockParsing s) > (top_inl_or_let + top_union + top_nominal + top_prototype + top_type + > top_instance + top_and_inl_or_let + top_and_union + top_open) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserErrorsList > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserErrorsList = (VSCRange * ParserErrors) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParseResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParseResult = Result<TopStatement,ParserErrorsList> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parseBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parseBlockParsing (s : BlockParsingEnv) : ParseResult = > if 0 < s.tokens.Length then > match top_statement s with > | Ok _ as x -> if s.Index = s.tokens.Length then x else Error [[fst > s.tokens.[[s.Index]], ExpectedEob]] > | Error [[]] -> > if s.Index = s.tokens.Length then Error [[fst (Array.last s.tokens), > UnexpectedEob]] > else Error [[fst s.tokens.[[s.Index]], ExpectedEob]] > | Error _ as l -> l > else > Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_parser_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_parser_error = function > | TypeVarsNeedToBeExplicitForExists -> "The type vars for the exists body > have to be specified up front in the bottom-up segment." > | DuplicateExistsVar -> "Duplicate variable in the exists type." > | ExistsNotAllowedInTypecase -> "The existential type is not allowed in > typecase." > | ForallNotAllowedInTypecase -> "The type lambda is not allowed in > typecase." > | MetavarShadowedByVar -> "The metavariable is shadowed by a variable." > | VarShadowedByMetavar -> "The variable is shadowed by a metavariable." > | ExpectedPairedSymbolInUnion -> "The union clause should be pair whose left > side is a symbol." > | ExpectedEscapedChar false -> "escaped character" > | ExpectedEscapedChar true -> "escaped character or the escaped variable > (\\v)" > | ExpectedUnescapedChar -> "unescaped character" > | ExpectedMacroVar -> "variable" > | ExpectedMacroTypeVar -> "type variable" > | ExpectedMacroTypeLitVar -> "type literal variable" > | ExpectedText -> "text" > | ExpectedMacroOpen -> "$\"" > | ExpectedStringOpen -> "\"" > | ExpectedMacroClose | ExpectedStringClose -> "\"" > | ExpectedKeyword x -> > match x with > | SpecExists -> "exists" > | SpecIn -> "in" > | SpecAnd -> "and" > | SpecFun -> "fun" > | SpecMatch -> "match" > | SpecTypecase -> "typecase" > | SpecFunction -> "function" > | SpecWith -> "with" > | SpecWithout -> "without" > | SpecAs -> "as" > | SpecWhen -> "when" > | SpecInl -> "inl" > | SpecLet -> "let" > | SpecForall -> "forall" > | SpecInm -> "inm" > | SpecInb -> "inb" > | SpecRec -> "rec" > | SpecIf -> "if" > | SpecThen -> "then" > | SpecElif -> "elif" > | SpecElse -> "else" > | SpecJoin -> "join" > | SpecJoinBackend -> "join_backend" > | SpecType -> "type" > | SpecNominal -> "nominal" > | SpecReal -> "real" > | SpecUnion -> "union" > | SpecOpen -> "open" > | SpecWildcard -> "_" > | SpecInstance -> "instance" > | SpecPrototype -> "prototype" > | ExpectedParenthesis(Round,Open) -> "(" > | ExpectedParenthesis(Curly,Open) -> "{" > | ExpectedParenthesis(Square,Open) -> "[[" > | ExpectedParenthesis(Round,Close) -> ")" > | ExpectedParenthesis(Curly,Close) -> "}" > | ExpectedParenthesis(Square,Close) -> "]]" > | ExpectedMacroExpression(MTerm,Open) -> "`(" > | ExpectedMacroExpression(MType,Open) -> "!(" > | ExpectedMacroExpression(MTypeLit,Open) -> "@(" > | ExpectedMacroExpression(MTerm,Close) -> ")" > | ExpectedMacroExpression(MType,Close) -> ")" > | ExpectedMacroExpression(MTypeLit,Close) -> ")" > | ExpectedOpenParenthesis -> "(, { or [[" > | ExpectedOperator' -> "operator" > | ExpectedOperator x -> x > | ExpectedUnaryOperator' -> "unary operator" > | ExpectedUnaryOperator x -> x > | ExpectedUnit -> "()" > | ExpectedSmallVar -> "lowercase variable" > | ExpectedBigVar -> "uppercase variable" > | ExpectedVar -> "variable" > | ExpectedLit -> "literal" > | ExpectedSymbol -> "symbol" > | ExpectedSymbolPaired -> "paired symbol" > | ExpectedStatement -> "statement" > | ExpectedFunctionAsBodyOfRecStatement -> "Rec statements should all return > functions known at parse time." > | ExpectedGlobalFunction -> "Global inl/let statements should all return > functions known at parse time." > | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp -> "Unexpected > pattern." > | ExpectedVarOrOpAsNameOfGlobalStatement -> "The first pattern of a global > statement should either be a variable or compile down to it." > | ExpectedVarOrOpAsNameOfRecStatement -> "The first pattern of a recursive > statement should either be a variable or compile down to it." > | ExpectedExpression -> "A sequence of statements should end in an > expression." > | InbuiltOpNotFound -> "Not found among the inbuilt operations." > | UnknownOperator -> "Operator does not have known precedence and > associativity." > | ForallNotAllowed -> "Forall not allowed here." > | InvalidPattern DisjointOrPatternVar -> "Both branches of an or pattern > need to have the same variables. This one is disjoint." > | InvalidPattern DuplicateTermVar -> "Duplicate term variable in pattern." > | InvalidPattern DuplicateTypeVar -> "Duplicate type variable in pattern." > | InvalidPattern ShadowedVar -> "Shadowed pattern variable." > | MetavarNotAllowed -> "Metavariable is not allowed here." > | SymbolPairedShouldStartWithUppercaseInTypeScope -> "Paired symbol should > start with uppercase in type scope." > | TermNotAllowed -> "The term is not allowed here." > | TypecaseNotAllowed -> "Typecase is not allowed here." > | UnexpectedAndInlRec -> "The first statement of a recursive block has to be > marked as recursive." > | ExpectedEob -> "Failed to parse this token." > | UnexpectedEob -> "Unexpected end of block past this token." > | UnknownError -> "Compiler error: Parsing failed at this position with no > error message and without consuming all the tokens in a block." > | DuplicateRecordTypeVar -> "Duplicate record type variable." > | DuplicateForallVar -> "Duplicate forall variable." > | DuplicateConstraint -> "Duplicate constraint." > | InvalidPattern DuplicateRecordSymbol > | DuplicateTermRecordSymbol -> "Duplicate record symbol." > | InvalidPattern DuplicateRecordInjection > | DuplicateTermRecordInjection -> "Duplicate record injection." > | DuplicateRecFunctionName -> "Shadowing of functions by the members of the > same mutually recursive block is not allowed." > | BottomUpNumberParseError (x, val_dsc) -> sprintf "The string %s cannot be > safely parsed as %s." x val_dsc > | DuplicateUnionKey -> "Duplicate union keys are not allowed." > | ListLiteralsNotAllowedInBottomUp -> "List literals are not allowed in the > bottom-up segment." > | ArrayLiteralsNotAllowedInBottomUp -> "Array literals are not allowed in > the bottom-up segment." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## HopacInfixes > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > .dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > > let (>>**) x f = > if x |> Hopac.Promise.Now.isFulfilled > then x |> Hopac.Promise.Now.get |> f > else Hopac.Infixes.(>>=*) x f > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockBundling > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac.Extensions > open Hopac.Stream > > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Bundle > > ── fsharp ────────────────────────────────────────────────────────────────────── > // These bundles are top statements that have their range offsets distributed > into them. > type [[<ReferenceEquality>]] Bundle = > | BundleType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | BundleNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | BundleNominalRec of (VSCRange * (VSCRange * VarString) * HoVar list * > RawTExpr) list > | BundleInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | BundleRecInl of (Comments * VSCRange * (VSCRange * VarString) * RawExpr) > list * is_top_down: bool > | BundlePrototype of Comments * VSCRange * (VSCRange * VarString) * > (VSCRange * VarString) * TypeVar list * RawTExpr > | BundleInstance of VSCRange * (VSCRange * VarString) * (VSCRange * > VarString) * TypeVar list * RawExpr > | BundleOpen of VSCRange * (VSCRange * VarString) * (VSCRange * > SymbolString) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bundle_range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bundle_range = function > | BundleType(r,_,_,_) | BundleNominal(r,_,_,_) | BundleInl(_,r,_,_,_) > | BundlePrototype(_,r,_,_,_,_) | BundleInstance(r,_,_,_,_) | > BundleOpen(r,_,_) -> r > | BundleNominalRec l -> List.head l |> fun (r,_,_,_) -> r > | BundleRecInl(l,_) -> List.head l |> fun (_,r,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset offset (range : VSCRange) : VSCRange = > let f (a : VSCPos) = {|a with line=offset + a.line|} > let a,b = range > f a, f b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_hovar offset (a,b) = add_offset offset a, b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_hovar_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_hovar_list offset x = List.map (add_offset_hovar offset) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_typevar offset ((a,b),c) = (add_offset offset a, b), > add_offset_hovar_list offset c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_typevar_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_typevar_list offset x = List.map (add_offset_typevar offset) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fold_offset_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec fold_offset_ty offset x = > let f = fold_offset_ty offset > let g = add_offset offset > match x with > | RawTWildcard r -> RawTWildcard(g r) > | RawTLit(r,a) -> RawTLit(g r, a) > | RawTB r -> RawTB(g r) > | RawTMetaVar(r,a) -> RawTMetaVar(g r,a) > | RawTVar(r,a) -> RawTVar(g r,a) > | RawTArray(r,a) -> RawTArray(g r,f a) > | RawTPair(r,a,b) -> RawTPair(g r,f a,f b) > | RawTFun(r,a,b,t) -> RawTFun(g r,f a,f b,t) > | RawTRecord(r,a) -> RawTRecord(g r,Map.map (fun _ -> f) a) > | RawTUnion(r,a,b,c) -> RawTUnion(g r,Map.map (fun _ (is_gadt,body) -> > is_gadt, f body) a,b,f c) > | RawTTypecase(r,a,b) -> RawTTypecase(g r,f a,List.map (fun (a,b) -> f a, f > b) b) > | RawTSymbol(r,a) -> RawTSymbol(g r,a) > | RawTApply(r,a,b) -> RawTApply(g r,f a,f b) > | RawTForall(r,a,b) -> RawTForall(g r,add_offset_typevar offset a,f b) > | RawTExists(r,a,b) -> RawTExists(g r,add_offset_typevar_list offset a,f b) > | RawTPrim(r,a) -> RawTPrim(g r,a) > | RawTTerm(r,a) -> RawTTerm(g r,fold_offset_term offset a) > | RawTMacro(r,a) -> RawTMacro(g r,fold_offset_macro offset a) > | RawTFilledNominal(r,a) -> RawTFilledNominal(g r,a) > | RawTLayout(r,a,b) -> RawTLayout(g r,f a,b) > and fold_offset_macro offset a = > let g = add_offset offset > List.map (function > | RawMacroText(r,a) -> RawMacroText(g r,a) > | RawMacroTerm(r,a) -> RawMacroTerm(g r,fold_offset_term offset a) > | RawMacroType(r,a) -> RawMacroType(g r,fold_offset_ty offset a) > | RawMacroTypeLit(r,a) -> RawMacroTypeLit(g r,fold_offset_ty offset a) > ) a > and fold_offset_term offset x = > let f = fold_offset_term offset > let ty = fold_offset_ty offset > let g = add_offset offset > match x with > | RawB r -> RawB (g r) > | RawV(r,a,b) -> RawV (g r,a,b) > | RawLit(r,a) -> RawLit (g r,a) > | RawDefaultLit(r,a) -> RawDefaultLit (g r,a) > | RawSymbol(r,a) -> RawSymbol (g r,a) > | RawType(r,a) -> RawType(g r, ty a) > | RawMatch(r,a,b) -> RawMatch(g r,f a,List.map (fun (a,b) -> > fold_offset_pattern offset a,f b) b) > | RawFun(r,a) -> RawFun(g r,List.map (fun (a,b) -> fold_offset_pattern > offset a,f b) a) > | RawForall(r,a,b) -> RawForall(g r,add_offset_typevar offset a,f b) > | RawExists(r,(r',a),b) -> RawExists(g r,(g r',Option.map (List.map ty) a),f > b) > | RawFilledForall(r,a,b) -> RawFilledForall(g r,a,f b) > | RawRecBlock(r,a,b) -> RawRecBlock(g r,List.map (fun ((r,a),b) -> (g r,a),f > b) a,f b) > | RawRecordWith(r,a,b,c) -> > let b = > b |> List.map (function > | RawRecordWithSymbol((r,a),b) -> RawRecordWithSymbol((g r,a),f > b) > | RawRecordWithSymbolModify((r,a),b) -> > RawRecordWithSymbolModify((g r,a),f b) > | RawRecordWithInjectVar((r,a),b) -> RawRecordWithInjectVar((g > r,a),f b) > | RawRecordWithInjectVarModify((r,a),b) -> > RawRecordWithInjectVarModify((g r,a),f b) > ) > let c = > c |> List.map (function > | RawRecordWithoutSymbol(r,a) -> RawRecordWithoutSymbol(g r,a) > | RawRecordWithoutInjectVar(r,a) -> RawRecordWithoutInjectVar(g > r,a) > ) > RawRecordWith(g r, List.map f a,b,c) > | RawOp(r,a,b) -> RawOp(g r,a,List.map f b) > | RawJoinPoint(r,q,a,b) -> RawJoinPoint(g r,Option.map (fun (r',w) -> g > r',w) q,f a,b) > | RawAnnot(r,a,b) -> RawAnnot(g r,f a,ty b) > | RawTypecase(r,a,b) -> RawTypecase(g r,ty a,List.map (fun (a,b) -> ty a,f > b) b) > | RawOpen(r,a,b,c) -> RawOpen(g r,add_offset_hovar offset > a,add_offset_hovar_list offset b,f c) > | RawApply(r,a,b) -> RawApply(g r,f a,f b) > | RawIfThenElse(r,a,b,c) -> RawIfThenElse(g r,f a,f b,f c) > | RawIfThen(r,a,b) -> RawIfThen(g r,f a,f b) > | RawPair(r,a,b) -> RawPair(g r,f a,f b) > | RawSeq(r,a,b) -> RawSeq(g r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(g r,f a,List.map f b,f c) > | RawReal(r,a) -> RawReal(g r,f a) > | RawMissingBody r -> RawMissingBody(g r) > | RawMacro(r,a) -> RawMacro(g r,fold_offset_macro offset a) > | RawArray(r,a) -> RawArray(g r,List.map f a) > and fold_offset_pattern offset x = > let f = fold_offset_pattern offset > let term = fold_offset_term offset > let ty = fold_offset_ty offset > let g = add_offset offset > let g' x = add_offset_hovar offset x > match x with > | PatFilledDefaultValue _ -> failwith "Compiler error: Later stages only." > | PatB r -> PatB(g r) > | PatE r -> PatE(g r) > | PatVar(r,a) -> PatVar(g r,a) > | PatDyn(r,a) -> PatDyn(g r,f a) > | PatUnbox(r,q,a) -> PatUnbox(g r,q,f a) > | PatAnnot(r,a,b) -> PatAnnot(g r,f a,ty b) > | PatPair(r,a,b) -> PatPair(g r,f a,f b) > | PatSymbol(r,a) -> PatSymbol(g r,a) > | PatRecordMembers(r,a) -> > let a = a |> List.map (function > | PatRecordMembersSymbol((r,a),b) -> PatRecordMembersSymbol((g > r,a),f b) > | PatRecordMembersInjectVar((r,a),b) -> PatRecordMembersInjectVar((g > r,a),f b) > ) > PatRecordMembers(g r,a) > | PatOr(r,a,b) -> PatOr(g r,f a,f b) > | PatAnd(r,a,b) -> PatAnd(g r,f a,f b) > | PatValue(r,a) -> PatValue(g r,a) > | PatDefaultValue(r,a) -> PatDefaultValue(g r,a) > | PatWhen(r,a,b) -> PatWhen(g r,f a,term b) > | PatNominal(r,a,b,c) -> PatNominal(g r,g' a,List.map g' b,f c) > | PatExists(r,a,b) -> PatExists(g r,List.map g' a,f b) > | PatArray(r,a) -> PatArray(g r,List.map f a) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bundle_blocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bundle_blocks (blocks : TopStatement Block list) = > match blocks with > | [[]] -> None > | {block=TopAnd _} :: x' -> failwith "Compiler error: TopAnd should be > eliminated during the first bundling step." > | {block=TopRecInl _} :: _ as l -> > l |> List.mapFold (fun _ -> function > | {offset=i; block=TopRecInl(com,r,a,b,c)} -> (com, add_offset i r, > add_offset_hovar i a, fold_offset_term i b), c > | _ -> failwith "Compiler error: Recursive inl statements can only > be followed by statements of the same type." > ) true > |> BundleRecInl |> Some > | {block=TopNominalRec _} :: _ as l -> > l |> List.map (function > | {offset=i; block=TopNominalRec(r,a,b,c)} -> (add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) > | _ -> failwith "Compiler error: Recursive type statements can only > be followed by statements of the same type." > ) > |> BundleNominalRec |> Some > | [[{offset=i; block=TopInl(com,r,a,b,c)}]] -> BundleInl(com, add_offset i > r, add_offset_hovar i a, fold_offset_term i b, c) |> Some > | [[{offset=i; block=TopPrototype(com,r,a,b,c,d)}]] -> > BundlePrototype(com,add_offset i r, add_offset_hovar i a, add_offset_hovar i b, > add_offset_typevar_list i c, fold_offset_ty i d) |> Some > | [[{offset=i; block=TopNominal(r,a,b,c)}]] -> BundleNominal(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some > | [[{offset=i; block=TopType(r,a,b,c)}]] -> BundleType(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some > | [[{offset=i; block=TopInstance(r,a,b,c,d)}]] -> BundleInstance(add_offset > i r, add_offset_hovar i a, add_offset_hovar i b, add_offset_typevar_list i c, > fold_offset_term i d) |> Some > | [[{offset=i; block=TopOpen(r,a,b)}]] -> BundleOpen(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b) |> Some > | {block=TopInl _ | TopPrototype _ | TopNominal _ | TopType _ | TopInstance > _ | TopOpen _} :: _ -> failwith "Compiler error: Regular top level statements > should be singleton bundles." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_line_to_range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_line_to_range line ((a,b) : VSCRange) = {|a with line=line+a.line|}, {|b > with line=line+b.line|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_error v = > let messages, expecteds = v |> List.distinct |> List.partition (fun x -> > System.Char.IsUpper(x,0)) > let ex () = match expecteds with [[x]] -> sprintf "Expected: %s" x | x -> > sprintf "Expected one of: %s" (String.concat ", " x) > let f l = String.concat "\n" l > if List.isEmpty expecteds then f messages > elif List.isEmpty messages then ex () > else f (ex () :: "" :: "Other error messages:" :: messages) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_block_parsing_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_block_parsing_error line (l : ParserErrorsList) : RString list = > l |> List.groupBy fst > |> List.map (fun (k,v) -> > let k = add_line_to_range line k > let v = List.map (snd >> show_parser_error) v > k, process_error v > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParsedBlock > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParsedBlock = {result : ParseResult; semantic_tokens : LineTokens} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserState = { > is_top_down : bool > blocks : (LineTokens * ParsedBlock Promise Block) list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleValue = {bundle : Bundle option; errors : RString list} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleState = (TopStatement Block list * BlockBundleValue) Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleStateInner > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleStateInner = {errors : RString list; tmp : TopStatement Block > list; state : BlockBundleState} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_bundle_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_block_bundle_init : BlockBundleState = Promise.Now.never() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_bundle > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Bundles the blocks with the `and` statements. Also collects the parser > errors. > /// Does diffing to ref preserve the bundles. > let wdiff_block_bundle (state : BlockBundleState) (l : ParserState) : > BlockBundleState = > let (+.) a b = add_line_to_range a b > > let empty = {state=wdiff_block_bundle_init; tmp=[[]]; errors=[[]]} > let move_temp (s : BlockBundleStateInner) next = > let o' = List.rev s.tmp > let fl () = (o',{bundle=bundle_blocks o'; errors=Seq.toList s.errors}), > next empty > if Promise.Now.isFulfilled s.state then > match Promise.Now.get s.state with > | Cons((o,q),xs) when o = o' -> (o,{bundle=q.bundle; > errors=Seq.toList s.errors}), next {state=xs; tmp=[[]]; errors=[[]]} > | _ -> fl () > else fl () > |> Cons |> Promise.Now.withValue > > let inline iter (s : BlockBundleStateInner) l f = > match l with > | (_,x) :: x' -> let offset = x.offset in x.block >>** fun {result=a} -> > f (offset,a,x') > | [[]] -> move_temp s (fun _ -> Promise.Now.withValue Nil) > let rec init (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') > -> > match x with > | Ok (TopAnd(r,_)) -> init {s with errors = (offset +. r, "Invalid `and` > statement.") :: s.errors} x' > | Ok (TopRecInl _ as a) -> recinl {s with tmp = {offset=offset; block=a} > :: s.tmp} x' > | Ok (TopNominalRec _ as a) -> rectype {s with tmp = {offset=offset; > block=a} :: s.tmp} x' > | Ok a -> move_temp {s with tmp = {offset=offset; block=a} :: s.tmp} > (fun s -> init s x') > | Error er -> init {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > and recinl (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') -> > match x with > | Ok (TopAnd(_, TopRecInl _ & a)) -> recinl {s with tmp = > {offset=offset; block=a} :: s.tmp} x' > | Ok (TopAnd(r, _)) -> recinl {s with errors = (offset +. r, "inl/let > recursive statements can only be followed by `and` inl/let statements.") :: > s.errors} x' > | Ok _ -> move_temp s (fun s -> init s l) > | Error er -> recinl {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > and rectype (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') -> match x with > | Ok (TopAnd(_, TopNominalRec _ & a)) -> rectype {s with tmp = > {offset=offset; block=a} :: s.tmp} x' > | Ok (TopAnd(r, _)) -> rectype {s with errors = (offset +. r, "`union > rec` can only be followed by `and union`.") :: s.errors} x' > | Ok _ -> move_temp s (fun s -> init s l) > | Error er -> rectype {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > > init {empty with state=state} l.blocks > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### semantic_tokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > let semantic_tokens (l : ParserState) = > let rec loop s = function > | (_,x) :: xs -> x.block >>= fun x -> loop > (FSharpx.Collections.PersistentVector.append s x.semantic_tokens) xs > | [[]] -> Job.result s > loop FSharpx.Collections.PersistentVector.empty l.blocks > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Infer > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### 'a ref' > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] 'a ref' = {mutable contents' : 'a} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TT > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TT = > | KindType > | KindFun of TT * TT > | KindMetavar of TT option ref' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Constraint > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Constraint = > | CUInt > | CSInt > | CInt > | CFloat > | CNumber > | CPrim > | CSymbol > | CRecord > | CPrototype of GlobalId > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConstraintOrModule > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConstraintOrModule = C of Constraint | M of Map<string,ConstraintOrModule> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Var > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] Var = { > scope : int > constraints : Constraint Set // Must be stated up front and needs to be > static in forall vars > kind : TT // Is not supposed to have metavars. > name : string // Is what gets printed. > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] MVar = { > mutable scope : int > mutable constraints : Constraint Set // Must be stated up front and needs to > be static in forall vars > kind : TT // Has metavars, and so is mutable. > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TM > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TM = > | TMText of string > | TMVar of T > | TMLitVar of T > and T = > | TyB > | TyLit of Literal > | TyPrim of PrimitiveType > | TySymbol of string > | TyPair of T * T > | TyRecord of Map<int * string, T> > | TyModule of Map<string, T> > | TyComment of Comments * T > | TyFun of T * T * FunType > | TyArray of T > | TyNominal of GlobalId > | TyUnion of Map<int * string,bool * T> * UnionLayout // The boolean arg > determines whether the union case is generalized. > | TyApply of T * T * TT // Regular type functions (TyInl) get reduced, while > this represents the staged reduction of nominals. > | TyInl of Var * T > | TyForall of Var * T > | TyExists of Var list * T > | TyMetavar of MVar * T option ref > | TyVar of Var * T option ref > | TyMacro of TM list > | TyLayout of T * Layout > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tyvar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tyvar x = TyVar(x, ref None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypeError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypeError = > | KindError of TT * TT > | KindErrorInConstraint of TT * TT > | ExpectedSymbolAsRecordKey of T > | ExpectedSymbolAsModuleKey of T > | UnboundVariable of string > | UnboundModule > | ModuleIndexFailedInOpen > | ModuleIndexWouldShadowLocalVars of string [[]] > | TermError of T * T > | TypeVarScopeError of string * T * T > | RecursiveMetavarsNotAllowed of T * T > | RecursiveTypevarsNotAllowed of T * T > | ForallVarConstraintError of string * Constraint Set * Constraint Set > | MetavarsNotAllowedInRecordWith > | ExpectedRecord of T > | ExpectedExistentialInTerm of T > | ExpectedExistentialInPattern of T > | UnexpectedNumberOfArgumentsInExistsPattern of got: int * expected: int > | UnexpectedNumberOfArgumentsInExistsBody of got: int * expected: int > | ExistsShouldntHaveMetavars of T list > | ExpectedRecordInsideALayout of T > | UnionsCannotBeApplied > | ExpectedNominalInApply of T > | MalformedNominal > | LayoutSetMustBeAnnotated > | ExpectedMutableLayout of T > | ExpectedRecordAsResultOfIndex of T > | RecordIndexFailed of string > | ModuleIndexFailed of string > | ExpectedModule of T > | ExpectedSymbol' of T > | ExpectedSymbolInRecordWith of T > | RealFunctionInTopDown > | ModuleMustBeImmediatelyApplied > | MissingRecordFieldsInPattern of T * string list > | CasePatternNotFoundForType of GlobalId * string > | CasePatternNotFound of string > | CannotInferCasePatternFromTermInEnv of T > | NominalInPatternUnbox of GlobalId > | TypeInEnvIsNotNominal of T > | UnionInPatternNominal of GlobalId > | ConstraintError of Constraint * T > | PrototypeConstraintCannotPropagateToMetavar of GlobalId * T > | PrototypeConstraintCannotPropagateToVar of GlobalId * T > | ExpectedAnnotation > | ExpectedSinglePattern > | RecursiveAnnotationHasMetavars of T > | ValueRestriction of T > | DuplicateRecInlName > | DuplicateKeyInRecUnion > | ExpectedConstraintInsteadOfModule > | InstanceNotFound of prototype: GlobalId * instance: GlobalId > | ExpectedPrototypeConstraint of Constraint > | ExpectedPrototypeInsteadOfModule > | ExpectedHigherOrder of T > | InstanceArityError of prototype_arity: int * instance_arity: int > | InstanceCoreVarsShouldMatchTheArityDifference of got: int * expected: int > | InstanceKindError of TT * TT > | KindNotAllowedInInstanceForall > | InstanceVarShouldNotMatchAnyOfPrototypes > | MissingBody > | MacroIsMissingAnnotation > | ArrayIsMissingAnnotation > | ExistsIsMissingAnnotation > | ShadowedForall > | ShadowedExists > | UnionTypesMustHaveTheSameLayout > | OrphanInstance > | ShadowedInstance > | UnusedTypeVariable of string list > | CompilerError of string > | IncorrectGADTConstructorType > | IncorrectRecursiveNominal > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### shorten'<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline shorten'<'a> (x : 'a) link next = > let x' : 'a = next x > if System.Object.ReferenceEquals(x,x') = false then link.contents' <- Some > x' > x' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_tt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_tt = function > | KindMetavar({contents'=Some x} & link) -> shorten' x link visit_tt > | a -> a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### shorten<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline shorten<'a> (x : 'a) (link : ref<option<'a>>) next = > let x' : 'a = next x > if System.Object.ReferenceEquals(x,x') = false then link.Value <- Some x' > x' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_t_mvar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_t_mvar = function > | TyComment(_,a) -> visit_t_mvar a > | TyMetavar(_,{contents=Some x} & link) -> shorten x link visit_t_mvar > | a -> a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_t > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_t x = > match visit_t_mvar x with > | TyVar(_,{contents=Some x}) -> visit_t x > | x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferTypeErrorException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception InferTypeErrorException of (VSCRange * TypeError) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### metavars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec metavars = function > | RawTTypecase _ | RawTExists _ | RawTFilledNominal _ | RawTMacro _ | > RawTVar _ | RawTTerm _ > | RawTPrim _ | RawTWildcard _ | RawTLit _ | RawTB _ | RawTSymbol _ -> > Set.empty > | RawTMetaVar(_,a) -> Set.singleton a > | RawTArray(_,a) | RawTLayout(_,a,_) | RawTForall(_,_,a) -> metavars a > | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> metavars a + > metavars b > | RawTUnion(_,l,_,this) -> Map.fold (fun s _ (_,v) -> s + metavars v) > (metavars this) l > | RawTRecord(_,l) -> Map.fold (fun s _ v -> s + metavars v) Set.empty l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TopEnv = { > nominals_next_tag : int > nominals_aux : Map<GlobalId, {|name : string; kind : TT|}> > nominals : Map<GlobalId, {|vars : Var list; body : T|}> > prototypes_next_tag : int > prototypes_instances : Map<GlobalId * GlobalId, Constraint Set list> > prototypes : Map<GlobalId, {|name : string; signature: T; kind : TT|}> > ty : Map<string,T> > term : Map<string,T> > constraints : Map<string,ConstraintOrModule> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_emptyInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_emptyInfer = { > nominals_next_tag = 0 > nominals_aux = Map.empty > nominals = Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.empty > prototypes = Map.empty > ty = Map.empty > term = Map.empty > constraints = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionInfer small big = { > nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag > nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux > nominals = Map.foldBack Map.add small.nominals big.nominals > prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > prototypes = Map.foldBack Map.add small.prototypes big.prototypes > ty = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |> > TyModule > | _ -> v > s |> Map.add k v > ) small.ty big.ty > term = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |> > TyModule > | _ -> v > s |> Map.add k v > ) small.term big.term > constraints = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | M x, Some (M x') -> Map.foldBack Map.add x x' |> M > | _ -> v > s |> Map.add k v > ) small.constraints big.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_moduleInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_moduleInfer m a : TopEnv = > {a with > ty = Map.add m (TyModule a.ty) Map.empty > term = Map.add m (TyModule a.term) Map.empty > constraints = Map.add m (M a.constraints) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env_ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env_ = { ty : Map<string,T>; term : Map<string,T>; constraints : > Map<string,ConstraintOrModule> } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InferEnv = Env_ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let kind_get x = > let rec loop = function > | KindFun(a,b) -> a :: loop b > | a -> [[a]] > let l = loop x > {|arity=List.length l; args=l|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prototype_init_forall_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prototype_init_forall_kind = function > | TyForall(a,_) -> a.kind > | _ -> failwith "Compiler error: The prototype should have at least one > forall." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_primt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_primt = function > | UInt8T -> "u8" > | UInt16T -> "u16" > | UInt32T -> "u32" > | UInt64T -> "u64" > | Int8T -> "i8" > | Int16T -> "i16" > | Int32T -> "i32" > | Int64T -> "i64" > | Float32T -> "f32" > | Float64T -> "f64" > | BoolT -> "bool" > | StringT -> "string" > | CharT -> "char" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### constraint_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec constraint_name (env : TopEnv) = function > | CSInt -> "sint" | CUInt -> "uint" | CInt -> "int" > | CFloat -> "float" | CNumber -> "number" | CPrim -> "prim" > | CSymbol -> "symbol" | CRecord -> "record" > | CPrototype i -> env.prototypes.[[i]].name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### constraint_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let constraint_kind (env : TopEnv) = function > | CSInt | CUInt | CInt | CFloat | CNumber | CPrim | CSymbol | CRecord -> > KindType > | CPrototype i -> env.prototypes.[[i]].kind > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec tt (env : TopEnv) = function > | TyComment(_,x) | TyMetavar(_,{contents=Some x}) -> tt env x > | TyNominal i -> env.nominals_aux.[[i]].kind > | TyApply(_,_,x) | TyMetavar({kind=x},_) | TyVar({kind=x},_) -> x > | TyExists _ | TyLit _ | TyUnion _ | TyLayout _ | TyMacro _ | TyB | TyPrim _ > | TyForall _ | TyFun _ | TyRecord _ | TyModule _ | TyPair _ | TySymbol _ | > TyArray _ -> KindType > | TyInl(v,a) -> KindFun(v.kind,tt env a) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### has_metavars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec has_metavars x = > let f = has_metavars > match visit_t x with > | TyMetavar _ -> true > | TyVar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ | TyModule _ > -> false > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b > | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l > | TyRecord l -> Map.exists (fun _ -> f) l > | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> false) > a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### term_subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Eliminates the metavars in the type if possible. > let term_subst a = > let h = System.Collections.Generic.HashSet(HashIdentity.Reference) > // 'a = 'b = ('c = int * 'd = float) > // visit_t shortens to: > // 'a = ('c = int * 'd = float) > // visit_t returns: > // ('c = int * 'd = float) > // term_subst returns: > // int * float > let inline g a f = > let _ = h.Add(a) > let x = f() > let _ = h.Remove(a) > x > let rec f a = > match visit_t a with > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ as x > -> x > | TyVar(x,r) -> TyVar(x, if h.Contains x then ref None else r) > | TyComment(a,b) -> TyComment(a,f b) > | TyPair(a,b) -> TyPair(f a, f b) > | TyRecord a -> TyRecord(Map.map (fun _ -> f) a) > | TyModule a -> TyModule(Map.map (fun _ -> f) a) > | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt, x) -> is_gadt, f x) > a,b) > | TyFun(a,b,t) -> TyFun(f a, f b, t) > | TyForall(a,b) -> g a <| fun () -> TyForall(a,f b) > | TyExists(a,b) -> TyExists(a,f b) > | TyArray a -> TyArray(f a) > | TyApply(a,b,c) -> TyApply(f a, f b, c) > | TyInl(a,b) -> g a <| fun () -> TyInl(a,f b) > | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> > x) a) > | TyLayout(a,b) -> TyLayout(f a,b) > f a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HoverTypes > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HoverTypes() = > // This is to allocate less trash for code that doesn't use GADTs. > // Unfortunately, we cannot use memoization instead as term_subst is not > functionally pure. > let rec has_substituted_tvars x = > let f = has_substituted_tvars > match x with > | TyMetavar(_,{contents=Some _}) -> true > | TyVar (_, {contents=Some x}) | TyComment(_,x) -> f x > | TyVar _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | > TySymbol _ | TyModule _ -> false > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b > | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l > | TyRecord l -> Map.exists (fun _ -> f) l > | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> > false) a > let hover_types = ResizeArray() > member _.AddHover((r : VSCRange),(x,(com : string))) = > hover_types.Add(r,((if has_substituted_tvars x then term_subst x else > x), com)) > member _.ToArray() = hover_types.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openInfer (hover_types : HoverTypes option) (top_env : InferEnv) > (local_env_ty : Map<string,T>) (r : VSCRange) b l = > let tryFind env x = > match Map.tryFind x env.term, Map.tryFind x env.ty, Map.tryFind x > env.constraints with > | Some (TyModule a), Some (TyModule b), Some (M c) -> ValueSome {term=a; > ty=b; constraints=c} > | _ -> ValueNone > match tryFind top_env b with > | ValueNone -> Result.Error(r, UnboundModule) > | ValueSome env -> > hover_types |> Option.iter (fun hover_types -> > hover_types.AddHover(r,(TyModule env.term,""))) > let rec loop env = function > | (r,x) :: x' -> > match tryFind env x with > | ValueSome env -> > hover_types |> Option.iter (fun hover_types -> > hover_types.AddHover(r,(TyModule env.term,""))) > loop env x' > | _ -> Result.Error(r, ModuleIndexFailedInOpen) > | [[]] -> Result.Ok env > loop env l |> Result.bind (fun env -> > let h = ResizeArray() > local_env_ty |> Map.iter (fun k _ -> if env.ty.ContainsKey k then > h.Add k) > if h.Count > 0 then Result.Error(r, > ModuleIndexWouldShadowLocalVars(h.ToArray())) > else Result.Ok env > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### validate_bound_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let validate_bound_vars (top_env : InferEnv) constraints term ty x = > let errors = ResizeArray() > let check_term term (a,b) = if Set.contains b term = false && > Map.containsKey b top_env.term = false then errors.Add(a,UnboundVariable b) > let check_ty ty (a,b) = if Set.contains b ty = false && Map.containsKey b > top_env.ty = false then errors.Add(a,UnboundVariable b) > let check_cons constraints (a,b) = > match Map.tryFind b constraints |> Option.orElseWith (fun () -> > Map.tryFind b top_env.constraints) with > | Some (C _) -> () > | Some (M _) -> errors.Add(a,ExpectedConstraintInsteadOfModule) > | None -> errors.Add(a,UnboundVariable b) > let rec cterm constraints (term, ty) x = > match x with > | RawSymbol _ | RawDefaultLit _ | RawLit _ | RawB _ -> () > | RawV(a,b,_) -> check_term term (a,b) > | RawType(_,x) -> ctype constraints term ty x > | RawMatch(_,body,l) -> cterm constraints (term, ty) body; List.iter > (fun (a,b) -> cterm constraints (cpattern constraints term ty a) b) l > | RawFun(_,l) -> List.iter (fun (a,b) -> cterm constraints (cpattern > constraints term ty a) b) l > | RawForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l; > cterm constraints (term, Set.add a ty) b > | RawFilledForall _ -> failwith "Compiler error: Should not appear > during variable validation." > | RawRecBlock(_,l,on_succ) -> > let term = List.fold (fun s ((_,x),_) -> Set.add x s) term l > List.iter (fun (_,x) -> cterm constraints (term, ty) x) l > cterm constraints (term, ty) on_succ > | RawRecordWith(_,a,b,c) -> > List.iter (cterm constraints (term, ty)) a > List.iter (function > | RawRecordWithSymbol(_,e) | RawRecordWithSymbolModify(_,e) -> > cterm constraints (term, ty) e > | RawRecordWithInjectVar(v,e) | > RawRecordWithInjectVarModify(v,e) -> check_term term v; cterm constraints (term, > ty) e > ) b > List.iter (function RawRecordWithoutSymbol _ -> () | > RawRecordWithoutInjectVar (a,b) -> check_term term (a,b)) c > | RawOp(_,_,l) -> List.iter (cterm constraints (term, ty)) l > | RawReal(_,x) | RawJoinPoint(_,_,x,_) -> cterm constraints (term, ty) x > | RawExists(_,(_,a),b) -> Option.iter (List.iter (ctype constraints term > ty)) a; cterm constraints (term, ty) b > | RawAnnot(_,RawMacro(_,a),b) -> cmacro constraints term ty a; ctype > constraints term ty b > | RawMacro(r,a) -> errors.Add(r,MacroIsMissingAnnotation); cmacro > constraints term ty a > | RawAnnot(_,RawArray(_,a),b) -> List.iter (cterm constraints (term, > ty)) a; ctype constraints term ty b > | RawArray(r,a) -> errors.Add(r,ArrayIsMissingAnnotation); List.iter > (cterm constraints (term, ty)) a > | RawAnnot(_,a,b) -> cterm constraints (term, ty) a; ctype constraints > term ty b > | RawTypecase(_,a,b) -> > ctype constraints term ty a > List.iter (fun (a,b) -> > ctype constraints term ty a > cterm constraints (term, ty + metavars a) b > ) b > | RawOpen(_,(a,b),l,on_succ) -> > match module_openInfer None top_env Map.empty a b l with > | Result.Ok x -> > let combine e m = Map.fold (fun s k _ -> Set.add k s) e m > cterm (Map.foldBack Map.add x.constraints constraints) (combine > term x.term, combine ty x.ty) on_succ > | Result.Error e -> errors.Add(e) > | RawHeapMutableSet(_,a,b,c) -> cterm constraints (term, ty) a; > List.iter (cterm constraints (term, ty)) b; cterm constraints (term, ty) c > | RawSeq(_,a,b) | RawPair(_,a,b) | RawIfThen(_,a,b) | RawApply(_,a,b) -> > cterm constraints (term, ty) a; cterm constraints (term, ty) b > | RawIfThenElse(_,a,b,c) -> cterm constraints (term, ty) a; cterm > constraints (term, ty) b; cterm constraints (term, ty) c > | RawMissingBody r -> errors.Add(r,MissingBody) > and cmacro constraints term ty a = > List.iter (function > | RawMacroText _ -> () > | RawMacroTerm(r,a) -> cterm constraints (term, ty) a > | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> ctype constraints term > ty a > ) a > and ctype constraints term ty x = > match x with > | RawTFilledNominal(_,_) | RawTPrim _ | RawTWildcard _ | RawTLit _ | > RawTB _ | RawTSymbol _ | RawTMetaVar _ -> () > | RawTTypecase(_,a,b) -> > ctype constraints term ty a > List.iter (fun (a,b) -> > ctype constraints term ty a > ctype constraints term (ty + metavars a) b > ) b > | RawTVar(a,b) -> check_ty ty (a,b) > | RawTArray(_,a) | RawTLayout(_,a,_) -> ctype constraints term ty a > | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> ctype > constraints term ty a; ctype constraints term ty b > | RawTUnion(_,l,_,this) -> Map.iter (fun _ (_,x) -> ctype constraints > term ty x) l; ctype constraints term ty this > | RawTRecord(_,l) -> Map.iter (fun _ -> ctype constraints term ty) l > | RawTForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l; > ctype constraints term (Set.add a ty) b > | RawTExists(_,a,b) -> > let ty = > List.fold (fun ty ((_,(a,_)),l) -> > List.iter (check_cons constraints) l > Set.add a ty > ) ty a > ctype constraints term ty b > | RawTTerm (_,a) -> cterm constraints (term, ty) a > | RawTMacro(_,a) -> cmacro constraints term ty a > and cpattern constraints term ty x = > //let is_first = System.Collections.Generic.HashSet() > let rec loop (term, ty) x = > let f = loop (term, ty) > match x with > | PatDefaultValue _ | PatFilledDefaultValue _ | PatValue _ | > PatSymbol _ | PatB _ | PatE _ -> term, ty > | PatExists(_,a,b) -> > let ty = List.fold (fun s (_,x) -> Set.add x s) ty a > loop (term, ty) b > | PatVar(_,b) -> > //if is_first.Add b then () // TODO: I am doing it like this so > I can reuse this code later for variable highlighting. > Set.add b term, ty > | PatDyn(_,x) | PatUnbox(_,_,x) -> f x > | PatPair(_,a,b) -> loop (f a) b > | PatRecordMembers(_,l) -> > List.fold (fun s -> function > | PatRecordMembersSymbol(_,x) -> loop s x > | PatRecordMembersInjectVar((a,b),x) -> check_term term > (a,b); loop s x > ) (term, ty) l > | PatAnd(_,a,b) | PatOr(_,a,b) -> loop (loop (term, ty) a) b > | PatAnnot(_,a,b) -> ctype constraints term ty b; f a > | PatWhen(_,a,b) -> let r = f a in cterm constraints r b; r > | PatNominal(_,(r,a),_,b) -> check_ty ty (r,a); f b > | PatArray(_,a) -> List.fold loop (term, ty) a > loop (term, ty) x > > match x with > | Choice1Of2 x -> cterm constraints (term, ty) x > | Choice2Of2 x -> ctype constraints term ty x > errors > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_bound_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_bound_vars (top_env : InferEnv) constraints term ty x = > let errors = validate_bound_vars top_env constraints term ty x > if 0 < errors.Count then raise (InferTypeErrorException (Seq.toList errors)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec subst (m : (Var * T) list) x = > let f = subst m > if List.isEmpty m then x > else > match x with > | TyComment(_,x) > | TyMetavar(_,{contents=Some x}) > | TyVar (_,{contents=Some x}) -> f x // Don't do path shortening here. > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ -> x > | TyPair(a,b) -> TyPair(f a, f b) > | TyRecord a -> TyRecord(Map.map (fun _ -> f) a) > | TyModule a -> TyModule(Map.map (fun _ -> f) a) > | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt,body) -> is_gadt, f > body) a,b) > | TyFun(a,b,t) -> TyFun(f a, f b, t) > | TyArray a -> TyArray(f a) > | TyApply(a,b,c) -> TyApply(f a, f b, c) > | TyVar (a,_) -> List.tryPick (fun (v,x) -> if a = v then Some x else > None) m |> Option.defaultValue x > | TyForall(a,b) -> TyForall(a, f b) > | TyExists(a,b) -> TyExists(a, f b) > | TyInl(a,b) -> TyInl(a, f b) > | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> > x) a) > | TyLayout(a,b) -> TyLayout(f a,b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_apply_split > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_apply_split x = > let rec loop s x = > match visit_t x with > | TyApply(a,b,_) -> loop (b :: s) a > | x -> x, s > loop [[]] x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_subst = function > | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_subst > | KindMetavar _ | KindType as x -> x > | KindFun(a,b) -> KindFun(kind_subst a,kind_subst b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### foralls_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec foralls_get = function > | RawForall(_,a,b) -> let a', b = foralls_get b in a :: a', b > | b -> [[]], b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### foralls_ty_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec foralls_ty_get = function > | TyForall(a,b) -> let a', b = foralls_ty_get b in a :: a', b > | b -> [[]], b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_force > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_force = function > | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_force > | KindMetavar link -> let x = KindType in link.contents' <- Some x; x > | KindType as x -> x > | KindFun(a,b) -> KindFun(kind_force a,kind_force b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### p > > ── fsharp ────────────────────────────────────────────────────────────────────── > let p prec prec' x = > if prec < prec' then x else sprintf "(%s)" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_kind x = > let rec f prec x = > let p = p prec > match x with > | KindMetavar {contents'=Some x} -> f prec x > | KindMetavar _ -> "?" > | KindType -> "*" > | KindFun(a,b) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_constraints > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_constraints env x = Set.toList x |> List.map (constraint_name env) |> > String.concat "; " |> sprintf "{%s}" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_nominal (env : TopEnv) i = match Map.tryFind i env.nominals_aux with > Some x -> x.name | None -> "?" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_layout_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_layout_type = function Heap -> "heap" | HeapMutable -> "mut" | > StackMutable -> "stack_mut" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_t > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_t (env : TopEnv) x = > let show_var (a : Var) = > let n = match a.kind with KindType -> a.name | _ -> sprintf "(%s : %s)" > a.name (show_kind a.kind) > if Set.isEmpty a.constraints then n > else sprintf "%s %s" n (show_constraints env a.constraints) > let rec f prec x = > let p = p prec > match x with > | TyVar (_, {contents=Some x}) | TyComment(_,x) | > TyMetavar(_,{contents=Some x}) -> f prec x > | TyMetavar _ -> "_" > | TyVar (a, _) -> a.name > | TyNominal i -> > match Map.tryFind i env.nominals_aux with > | Some x when prec < 0 -> sprintf "(%s : %s)" x.name (show_kind > x.kind) > | Some x -> x.name > | _ -> "?" > | TyB -> "()" > | TyLit x -> show_lit x > | TyPrim x -> show_primt x > | TySymbol x -> sprintf ".%s" x > | TyExists(a,b) -> > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "exists %s. %s" a (f -1 b)) > | TyForall _ -> > let a, b = > let rec loop = function > | TyForall(a,b) -> let a',b = loop b in (a :: a'), b > | b -> [[]], b > loop x > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "forall %s. %s" a (f -1 b)) > | TyInl _ -> > let a, b = > let rec loop = function > | TyInl(a,b) -> let a',b = loop b in (a :: a'), b > | b -> [[]], b > loop x > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "%s => %s" a (f -1 b)) > | TyArray a -> p 30 (sprintf "array_base %s" (f 30 a)) > | TyApply(a,b,_) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b)) > | TyPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b)) > | TyFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > | TyFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f > 19 b)) > | TyFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) > (f 19 b)) > | TyModule l -> > if prec = -2 then > l |> Map.toList |> List.map (fun (k,v) -> > let a,b = k, f -1 v > match v with > | TyComment(com,_) -> sprintf "%s : %s\n---\n%s\n---\n" a b > com > | _ -> sprintf "%s : %s" a b > ) > |> String.concat "\n" > else "module" > | TyRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | TyUnion(l,_) -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),(_,v)) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "| ") > | TyMacro a -> p 30 (List.map (function TMLitVar a | TMVar a -> f -1 a | > TMText a -> a) a |> String.concat "") > | TyLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a)) > > f -2 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_type_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_type_error (env : TopEnv) x = > let f = show_t env > match x with > | IncorrectRecursiveNominal -> "The non-recursive nominals should not use > their own type in the clause." > | IncorrectGADTConstructorType -> "The GADT case in the union has to result > in an instance of the union being constructed. Any type other than the self > being in the range of the union is not allowed." > | ExistsShouldntHaveMetavars a -> sprintf "The variables of the exists body > shouldn't have metavariables left over in them.\nGot: [[%s]]" (List.map f a |> > String.concat ", ") > | ExpectedExistentialInPattern a -> sprintf "The variable being destructured > in the pattern match need to be explicitly annotated and with an existential > type.\nGot: %s" (f a) > | UnexpectedNumberOfArgumentsInExistsPattern(got,exp) -> sprintf "The number > of arguments in the existential pattern doesn't match the one in the type.\nGot: > %i\nExpected: %i" got exp > | UnexpectedNumberOfArgumentsInExistsBody(got,exp) -> sprintf "The number of > arguments in the existential body doesn't match the one in the type.\nGot: > %i\nExpected: %i" got exp > | ExpectedExistentialInTerm a -> sprintf "The body of `expects` need to be > explicitly annotated and with an existential type.\nGot: %s" (f a) > | UnionsCannotBeApplied -> "Unions cannot be applied." > | ExpectedNominalInApply a -> sprintf "Expected a nominal.\nGot: %s" (f a) > | MalformedNominal -> "Malformed nominal." > | ModuleMustBeImmediatelyApplied -> "Module must be immediately applied." > | ExpectedSymbol' a -> sprintf "Expected a symbol.\nGot: %s" (f a) > | KindError(a,b) -> sprintf "Kind unification failure.\nGot: > %s\nExpected: %s" (show_kind a) (show_kind b) > | KindErrorInConstraint(a,b) -> sprintf "Kind unification failure when > propagating them from constraints.\nGot: %s\nExpected: %s" (show_kind a) > (show_kind b) > | TermError(a,b) -> sprintf "Unification failure.\nGot: %s\nExpected: > %s" (f a) (f b) > | RecursiveMetavarsNotAllowed(a,b) -> sprintf "Recursive metavariables are > not allowed. A metavar cannot be unified with a type that has itself.\nGot: > %s\nExpected: %s" (f a) (f b) > | RecursiveTypevarsNotAllowed(a,b) -> sprintf "Recursive type variables are > not allowed. A type variable cannot be unified with a type that has > itself.\nGot: %s\nExpected: %s" (f a) (f b) > | ExpectedSymbolAsRecordKey a -> sprintf "Expected symbol as a record > key.\nGot: %s" (f a) > | ExpectedSymbolAsModuleKey a -> sprintf "Expected symbol as a module > key.\nGot: %s" (f a) > | UnboundVariable x -> sprintf "Unbound variable: %s." x > | UnboundModule -> sprintf "Unbound module." > | ModuleIndexFailedInOpen -> sprintf "Module does not have a submodule with > that key." > | ModuleIndexWouldShadowLocalVars [[|v|]] -> $"The module open would shadow > a local variable: {v}." > | ModuleIndexWouldShadowLocalVars vars -> let v = String.concat ", " vars in > $"The module open would shadow the local variables: {v}." > | TypeVarScopeError(a,_,_) -> sprintf "Tried to unify the type variable %s > with a metavar outside its scope." a > | ForallVarConstraintError(n,a,b) -> sprintf "Metavariable's constraints > must be a subset of the forall var %s's.\nGot: %s\nExpected: %s" n > (show_constraints env a) (show_constraints env b) > | MetavarsNotAllowedInRecordWith -> sprintf "In the top-down segment the > record keys need to be fully known. Please add an annotation." > | LayoutSetMustBeAnnotated -> sprintf "The layout type being set must be > annotated." > | ExpectedMutableLayout a -> sprintf "Expected a mutable layout type.\nGot: > %s" (f a) > | ExpectedRecord a -> sprintf "Expected a record.\nGot: %s" (f a) > | ExpectedRecordInsideALayout a -> sprintf "Expected a record inside a > layout type.\nGot: %s" (f a) > | ExpectedRecordAsResultOfIndex a -> sprintf "Expected a record as result of > index.\nGot: %s" (f a) > | RecordIndexFailed a -> sprintf "The record does not have the key: %s" a > | ModuleIndexFailed a -> sprintf "The module does not have the key: %s" a > | ExpectedModule a -> sprintf "Expected a module.\nGot: %s" (f a) > | ExpectedSymbolInRecordWith a -> sprintf "Expected a symbol.\nGot: %s" (f > a) > | RealFunctionInTopDown -> sprintf "Real segment functions are forbidden in > the top-down segment. They can only be used in `real` expressions or .spir > modules." > | MissingRecordFieldsInPattern(a,b) -> sprintf "The record is missing the > following fields: %s.\nGot: %s" (String.concat ", " b) (f a) > | CasePatternNotFoundForType(i,n) -> sprintf "%s does not have the %s case." > (show_nominal env i) n > | CasePatternNotFound n -> sprintf "Cannot find a function with the same > name as the %s case in the environment." n > | CannotInferCasePatternFromTermInEnv a -> sprintf "Cannot infer the higher > order type that has this case from the following type.\nGot: %s" (f a) > | NominalInPatternUnbox i -> sprintf "Expected an union type, but %s is a > nominal." (show_nominal env i) > | TypeInEnvIsNotNominal a -> sprintf "Expected a nominal type.\nGot: %s" (f > a) > | UnionInPatternNominal i -> sprintf "Expected a nominal type, but %s is an > union." (show_nominal env i) > | ConstraintError(a,b) -> sprintf "Constraint satisfaction error.\nGot: > %s\nFails to satisfy: %s" (f b) (constraint_name env a) > | ExpectedAnnotation -> sprintf "Recursive functions with foralls must be > fully annotated." > | ExpectedSinglePattern -> sprintf "Recursive functions with foralls must > not have multiple clauses in their patterns." > | RecursiveAnnotationHasMetavars a -> sprintf "Recursive functions with > foralls must not have metavars.\nGot: %s" (f a) > | ValueRestriction a -> sprintf "Metavars that are not part of the enclosing > function's signature are not allowed. They need to be values.\nGot: %s" (f a) > | DuplicateRecInlName -> "Shadowing of functions by the members of the same > mutually recursive block is not allowed." > | DuplicateKeyInRecUnion -> "Mutually recursive unions should not have > overlapping keys." > | ExpectedConstraintInsteadOfModule -> sprintf "Expected a constraint > instead of module." > | InstanceNotFound(prot,ins) -> sprintf "The higher order type instance %s > does not have the prototype %s." (show_nominal env ins) > env.prototypes.[[prot]].name > | ExpectedPrototypeConstraint a -> sprintf "Expected a prototype > constraint.\nGot: %s" (constraint_name env a) > | PrototypeConstraintCannotPropagateToMetavar(a,b) -> sprintf "Cannot > propagate the %s prototype constraint to the applied metavariable as the kinds > would not match. If this is not intended to be a type var, provide a type > annotation to a concrete type.\nGot: %s" env.prototypes.[[a]].name (f b) > | PrototypeConstraintCannotPropagateToVar(a,b) -> sprintf "Cannot propagate > the %s prototype constraint to the applied type variable as the kinds would not > match.\nGot: %s" env.prototypes.[[a]].name (f b) > | ExpectedPrototypeInsteadOfModule -> "Expected a prototype instead of > module." > | ExpectedHigherOrder a -> sprintf "Expected a higher order type.\nGot: %s" > (f a) > | InstanceArityError(prot,ins) -> sprintf "The arity of the instance must be > greater or equal to that of the prototype.\nInstance arity: %i\nPrototype > arity: %i" ins prot > | InstanceCoreVarsShouldMatchTheArityDifference(num_vars,expected) -> > sprintf "The number of forall variables in the instance needs to be specified so > it equals the difference between the instance arity and the prototype > arity.\nInstance variables specified: %i\nExpected: %i" > num_vars expected > | InstanceKindError(a,b) -> sprintf "The kinds of the instance foralls are > incompatible with those of the prototype.\nGot: %s\nExpected: %s" > (show_kind a) (show_kind b) > | KindNotAllowedInInstanceForall -> "Kinds should not be explicitly stated > in instance foralls." > | InstanceVarShouldNotMatchAnyOfPrototypes -> "Instance forall must not have > the same name as any of the prototype foralls." > | MissingBody -> "The function body is missing." > | MacroIsMissingAnnotation -> "The macro needs an annotation." > | ArrayIsMissingAnnotation -> "The array needs an annotation." > | ExistsIsMissingAnnotation -> "The existential type needs an annotation." > | ShadowedForall -> "Shadowing of foralls is not allowed in the top-down > segment." > | ShadowedExists -> "Shadowing of existential type variables is not allowed > in the top-down segment." > | UnionTypesMustHaveTheSameLayout -> "The two union types must have the same > layout." > | OrphanInstance -> "The instance has to be defined in the same package as > either the prototype or the nominal." > | ShadowedInstance -> "The instance cannot be defined twice." > | UnusedTypeVariable [[x]] -> sprintf "The type variable %s is unused in the > function's type signature." x > | UnusedTypeVariable vars -> sprintf "The type variables %s are unused in > the function's type signature." (vars |> String.concat ", ") > | CompilerError x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### loc_env > > ── fsharp ────────────────────────────────────────────────────────────────────── > let loc_env (x : TopEnv) = {term=x.term; ty=x.ty; constraints=x.constraints} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### names_of > > ── fsharp ────────────────────────────────────────────────────────────────────── > let names_of vars = List.map (fun x -> x.name) vars |> Set > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit = function > | LitUInt8 _ -> TyPrim UInt8T > | LitUInt16 _ -> TyPrim UInt16T > | LitUInt32 _ -> TyPrim UInt32T > | LitUInt64 _ -> TyPrim UInt64T > | LitInt8 _ -> TyPrim Int8T > | LitInt16 _ -> TyPrim Int16T > | LitInt32 _ -> TyPrim Int32T > | LitInt64 _ -> TyPrim Int64T > | LitFloat32 _ -> TyPrim Float32T > | LitFloat64 _ -> TyPrim Float64T > | LitBool _ -> TyPrim BoolT > | LitString _ -> TyPrim StringT > | LitChar _ -> TyPrim CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### autogen_name_in_fun > > ── fsharp ────────────────────────────────────────────────────────────────────── > let autogen_name_in_fun (i : int) = let x = char i + 'a' in if 'z' < x then > sprintf "'%i" i else sprintf "'%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### autogen_name_in_typecase > > ── fsharp ────────────────────────────────────────────────────────────────────── > let autogen_name_in_typecase (i : int) = let x = char i + 'a' in if 'z' < x then > sprintf "'t%i" i else sprintf "'t%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### trim_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let trim_kind = function KindFun(_,k) -> k | _ -> failwith "impossible" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FilledTop > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Similar to BundleTop except with type annotations and type application filled > in. > type FilledTop = > | FType of VSCRange * RString * HoVar list * RawTExpr > | FNominal of VSCRange * RString * HoVar list * RawTExpr > | FNominalRec of (VSCRange * RString * HoVar list * RawTExpr) list > | FInl of VSCRange * RString * RawExpr > | FRecInl of (VSCRange * RString * RawExpr) list > | FPrototype of VSCRange * RString * RString * TypeVar list * RawTExpr > | FInstance of VSCRange * RGlobalId * RGlobalId * RawExpr > | FOpen of VSCRange * RString * RString list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### 'a AdditionType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type 'a AdditionType = > | AOpen of 'a > | AInclude of 'a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferScope > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InferScope = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] InferResult = { > filled_top : FilledTop Hopac.Promise > top_env_additions : TopEnv AdditionType > offset : int > hovers : RString [[]] > errors : RString list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dispose_gadt_links > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dispose_gadt_links gadt_links = Seq.iter (fun (x : ref<option<'a>>) -> > x.Value <- None) gadt_links > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_foralls_used' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_foralls_used' (errors : (VSCRange * TypeError) ResizeArray) > outside_foralls r x = > let h = HashSet() > let rec f x = > match visit_t x with > | TyVar (v,_) -> Set.singleton v.name > | TyExists(v,a) -> > List.fold (fun a v -> > if Set.contains v.name a = false then h.Add(v.name) |> ignore; a > else Set.remove v.name a > ) (f a) v > | TyForall(v,a) -> > let a = f a > if Set.contains v.name a = false then h.Add(v.name) |> ignore; a > else Set.remove v.name a > | TyUnion _ | TyModule _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | > TyPrim _ | TySymbol _ -> Set.empty > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a + f b > | TyRecord a -> Map.fold (fun s _ x -> Set.union s (f x)) Set.empty a > | TyComment(_,a) | TyLayout(a,_) | TyInl(_,a) | TyArray a -> f a > | TyMacro a -> > List.fold (fun s x -> > match x with > | TMLitVar a | TMVar a -> f a > | TMText _ -> Set.empty > ) Set.empty a > let used_vars = f x > Seq.iter (h.Add >> ignore) (outside_foralls - used_vars) > if 0 < h.Count then > errors.Add(r, UnusedTypeVariable (Seq.toList h)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_foralls_used > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_foralls_used errors r x = assert_foralls_used' errors Set.empty r x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### validate_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let validate_nominal (errors : _ ResizeArray) global_id body v = > // Stack union types and regular nominals must not be recursive. > // Unlike in the previous version of Spiral which simply didn't put the > nominal type in the environment > // this one has to do it becaus the GADT constructors need access to it. > let rec assert_nominal_non_recursive v = > let f = assert_nominal_non_recursive > match visit_t v with > | TyNominal global_id' -> if global_id = global_id' then > errors.Add(range_of_texpr_gadt_body body, IncorrectRecursiveNominal) > | TyMetavar _ | TyVar _ | TyModule _ | TyUnion _ | TyB | TyLit _ | > TyPrim _ | TySymbol _ -> () > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b > | TyRecord a -> Map.iter (fun _ -> f) a > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | TMText > _ -> ()) a > match v with // Validates the union type. > | TyUnion(a,b) -> > a |> Map.iter (fun name (is_gadt, v) -> > let body = > match body with > | RawTUnion(_,a,_,_) -> Map.find name a |> snd > | _ -> failwith "Compiler error: Expected an union." > let is_stack = b = UStack > > // Makes sure that the GADT constructor is resulting in its own > type. > // Also make sure that it's not using an instance of itself in its > constructor other than in first position. > let rec assert_gadt_has_proper_specialized_constructor = function > | TyNominal global_id' -> if global_id <> global_id' then > errors.Add(range_of_texpr_gadt_constructor body, IncorrectGADTConstructorType) > | TyApply(a,b,_) -> > assert_gadt_has_proper_specialized_constructor a > if is_stack then assert_nominal_non_recursive b > | _ -> errors.Add(range_of_texpr_gadt_constructor body, > IncorrectGADTConstructorType) > > let assert_gadt_is_valid v = > let rec find_gadt_constructor outside_foralls = function > | TyForall(n,t) -> find_gadt_constructor (Set.add n.name > outside_foralls) t > | TyFun(a,b,_) -> > if is_stack then assert_nominal_non_recursive a > assert_gadt_has_proper_specialized_constructor b > assert_foralls_used errors (range_of_texpr_gadt_body > body) a > assert_foralls_used' errors outside_foralls > (range_of_texpr_gadt_constructor body) b > | b -> > assert_gadt_has_proper_specialized_constructor b > assert_foralls_used' errors outside_foralls > (range_of_texpr_gadt_constructor body) b > > find_gadt_constructor Set.empty v > > if is_gadt then assert_gadt_is_valid v > else > if is_stack then assert_nominal_non_recursive v > assert_foralls_used errors (range_of_texpr body) v // We need to > assert that the foralls in regular union bodies are checked. > ) > | _ -> > assert_nominal_non_recursive v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_to_rawkind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_to_rawkind (x : TT) : RawKindExpr = > match visit_tt x with > | KindMetavar _ | KindType -> RawKindStar > | KindFun(a,b) -> RawKindFun(kind_to_rawkind a, kind_to_rawkind b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var_to_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var_to_hovar r (x : Var) : HoVar = r,(x.name,kind_to_rawkind x.kind) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var_to_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var_to_typevar r (x : Var) : TypeVar = var_to_hovar r x, [[]] // In the > bottom up segment the constrains aren't checked anywhere so we'll put an empty > list here. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### infer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let infer package_id module_id (top_env' : TopEnv) expr = > let at_tag i = {package_id=package_id; module_id=module_id; tag=i} > let mutable top_env = top_env' // Is mutated only in two places at the top > level. During actual inference can otherwise be thought of as immutable. > let errors = ResizeArray() > let generalized_statements = Dictionary(HashIdentity.Reference) > let type_apply_args = Dictionary(HashIdentity.Reference) > let module_type_apply_args = Dictionary(HashIdentity.Reference) > let annotations = Dictionary<obj,_>(HashIdentity.Reference) > let exists_vars = Dictionary<obj,_>(HashIdentity.Reference) > let gadt_typecases = Dictionary<obj,_>(HashIdentity.Reference) > let mutable autogened_forallvar_count_in_typecase = 0 > let mutable autogened_forallvar_count_in_funs = 0 > let hover_types = HoverTypes() > > /// Fills in the type applies and annotations, and generalizes statements. > Also strips annotations from terms and patterns. > /// Dealing with recursive statement type applies requires some special > consideration. > let fill r rec_term expr = > assert (0 = errors.Count) > let t_to_rawtexpr r vars_to_metavars expr = > let rec f x = > match visit_t x with > | TyUnion _ | TyMetavar _ | TyInl _ | TyModule _ as x -> > failwithf "Compiler error: These cases should not appear in fill.\nGot: %A" x > | TyForall(a,b) -> RawTForall(r,var_to_typevar r a,f b) > | TyComment(_,x) -> f x > | TyB -> RawTB r > | TyLit x -> RawTLit(r,x) > | TyPrim x -> RawTPrim(r,x) > | TySymbol x -> RawTSymbol(r,x) > | TyPair(a,b) -> RawTPair(r,f a,f b) > | TyRecord l -> RawTRecord(r,Map.map (fun _ -> f) l) > | TyFun(a,b,t) -> RawTFun(r,f a,f b,t) > | TyExists(a,b) -> RawTExists(r,a |> List.map (fun n -> > (r,(n.name,RawKindWildcard)),[[]]), f b) > | TyArray a -> RawTArray(r,f a) > | TyNominal i -> RawTFilledNominal(r,i) > | TyApply(a,b,_) -> RawTApply(r,f a,f b) > | TyVar (a,_) -> > let is_typecase_metavar = List.tryFind (function TyVar(b,_) > -> a = b | _ -> failwith "Compiler error: Expected a TyVar.") vars_to_metavars > |> Option.isSome > if is_typecase_metavar then RawTMetaVar(r,a.name) else > RawTVar(r,a.name) > | TyMacro l -> l |> List.map (function TMText x -> > RawMacroText(r,x) | TMVar x -> RawMacroType(r,f x) | TMLitVar x -> > RawMacroTypeLit(r,f x)) |> fun l -> RawTMacro(r,l) > | TyLayout(a,b) -> RawTLayout(r,f a,b) > f expr > let annot r x = t_to_rawtexpr r [[]] (snd annotations.[[x]]) > let rec fill_typecases rec_term x = > match gadt_typecases.TryGetValue(x) with > | true, typecase_data -> > Seq.foldBack (fun > (typecase_cond,forall_vars,typecase_constructor) typecase_body -> > let r = range_of_expr typecase_body > RawTypecase(r, t_to_rawtexpr r [[]] typecase_cond, > [[t_to_rawtexpr r forall_vars typecase_constructor, typecase_body]]) > ) typecase_data (term rec_term x) > | _ -> > term rec_term x > and fill_foralls r rec_term body = > let _,body = foralls_get body > let l,_ = foralls_ty_get generalized_statements.[[body]] > List.foldBack (fun (x : Var) s -> RawFilledForall(r,x.name,s)) l > (term rec_term body) > and term rec_term x = > let f = term rec_term > let clauses l = > List.map (fun (a, b) -> > let rec_term,a = pattern rec_term a > a,fill_typecases rec_term b > ) l > match x with > | RawFilledForall _ | RawMissingBody _ | RawType _ as x -> failwithf > "Compiler error: These cases should not appear in fill. It is intended to be > called on top level statements only.\nGot: %A" x > | RawTypecase _ > | RawSymbol _ | RawB _ | RawLit _ | RawOp _ -> x > | RawReal(_,x) -> x > | RawV(r,n,false) -> x > | RawV(r,n,true) -> > match type_apply_args.TryGetValue(n) with > | true, type_apply_args -> > match Map.tryFind n rec_term with > | None -> fst type_apply_args > | Some t -> t |> snd type_apply_args > |> List.fold (fun s x -> > RawApply(r,s,RawType(r,t_to_rawtexpr r [[]] x))) x > | _ -> x > | RawDefaultLit(r,_) -> RawAnnot(r,x,annot r x) > | RawForall(r,a,b) -> RawForall(r,a,f b) > | RawMatch(r'',(RawForall _ | RawFun _) & body,[[PatVar(r,name), > on_succ]]) -> > let _,body = foralls_get body > RawMatch(r'',fill_foralls r rec_term body,[[PatVar(r,name), > fill_typecases (Map.remove name rec_term) on_succ]]) > | RawMatch(r,a,b) -> RawMatch(r,f a,clauses b) > | RawFun(r,a) -> RawAnnot(r,RawFun(r,clauses a),annot r x) > | RawExists(r,(r',a),b) -> RawExists(r,(r',Some(Option.defaultWith > (fun () -> List.map (t_to_rawtexpr r [[]]) exists_vars.[[x]]) a)),f b) > | RawRecBlock(r,l,on_succ) -> > let has_foralls = List.exists (function (_,RawForall _) -> true > | _ -> false) l > if has_foralls then RawRecBlock(r,List.map (fun (a,b) -> a, f b) > l,f on_succ) > else > let rec_term = List.fold (fun s ((_,name),b) -> Map.add name > generalized_statements.[[foralls_get b |> snd]] s) rec_term l > let l = List.map (fun (a,b) -> a, fill_foralls (fst a) > rec_term b) l > RawRecBlock(r,l,f on_succ) > | RawRecordWith(r,a,b,c) -> > let b = b |> List.map (function > | RawRecordWithSymbol(a,b) -> RawRecordWithSymbol(a,f b) > | RawRecordWithSymbolModify(a,b) -> > RawRecordWithSymbolModify(a,f b) > | RawRecordWithInjectVar(a,b) -> RawRecordWithInjectVar(a,f > b) > | RawRecordWithInjectVarModify(a,b) -> > RawRecordWithInjectVarModify(a,f b) > ) > RawRecordWith(r,List.map f a,b,c) > | RawJoinPoint(r,q,a,b) -> RawAnnot(r,RawJoinPoint(r,q,f a,b),annot > r x) > | RawAnnot(r,a,_) -> f a > | RawOpen(r,a,b,c) -> > let f = function TyModule s -> s | _ -> failwith "Compiler > error: Module open should always succeed in fill." > List.fold (fun s x -> (f s).[[snd x]]) top_env.term.[[snd a]] b > |> f > |> Map.fold (fun s k _ -> Map.remove k s) rec_term > |> fun rec_term -> RawOpen(r,a,b,term rec_term c) > | RawApply(r,a,b) -> > let q = RawApply(r,f a,f b) > match module_type_apply_args.TryGetValue(x) with > | true, typevars -> List.fold (fun a b -> > RawApply(r,a,RawType(r,t_to_rawtexpr r [[]] b))) q typevars > | _ -> q > | RawIfThenElse(r,a,b,c) -> RawIfThenElse(r,f a,f b,f c) > | RawIfThen(r,a,b) -> RawIfThen(r,f a,f b) > | RawPair(r,a,b) -> RawPair(r,f a,f b) > | RawSeq(r,a,b) -> RawSeq(r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(r,f a,List.map f > b,f c) > | RawMacro(r,l) -> > let l = l |> List.map (function RawMacroTerm(r,x) -> > RawMacroTerm(r,f x) | x -> x ) > RawAnnot(r,RawMacro(r,l),annot r x) > | RawArray(r,a) -> RawAnnot(r,RawArray(r,List.map f a),annot r x) > and pattern rec_term x' = > let mutable rec_term = rec_term > let rec f = function > | PatFilledDefaultValue _ -> failwith "Compiler error: > PatDefaultValueFilled should not appear in fill." > | PatValue _ | PatSymbol _ | PatE _ | PatB _ as x -> x > | PatVar(r,name) as x -> rec_term <- Map.remove name rec_term; x > | PatDyn(r,a) -> PatDyn(r,f a) > | PatUnbox(r,q,a) -> PatUnbox(r,q,f a) > | PatExists(r,q,a) -> PatExists(r,q,f a) > | PatAnnot(_,a,_) -> f a > | PatPair(r,a,b) -> PatPair(r,f a,f b) > | PatRecordMembers(r,a) -> > let a = a |> List.map (function > | PatRecordMembersSymbol(a,b) -> > PatRecordMembersSymbol(a,f b) > | PatRecordMembersInjectVar(a,b) -> > PatRecordMembersInjectVar(a,f b) > ) > PatRecordMembers(r,a) > | PatOr(r,a,b) -> PatOr(r,f a,f b) > | PatAnd(r,a,b) -> PatAnd(r,f a,f b) > | PatDefaultValue(r,a) as x -> PatFilledDefaultValue(r,a,annot r > x) > | PatWhen(r,a,b) -> PatWhen(r,f a,term rec_term b) > | PatNominal(r,a,b,c) -> PatNominal(r,a,b,f c) > | PatArray(r,a) -> PatArray(r,List.map f a) > rec_term, f x' > > let x = fill_foralls r rec_term expr > assert (0 = errors.Count) > x > > let fresh_kind () = KindMetavar {contents'=None} > let fresh_var'' x = TyMetavar (x, ref None) > let fresh_var' scope kind = fresh_var'' {scope=scope; constraints=Set.empty; > kind=kind} > let fresh_subst_var scope cons kind = fresh_var'' {scope=scope; > constraints=cons; kind=kind} > let forall_subst_all scope x = > let rec loop m x = > match visit_t x with > | TyForall(a,b) -> > let v = fresh_subst_var scope a.constraints a.kind > let type_apply_args,b = loop ((a, v) :: m) b > v :: type_apply_args, b > | x -> [[]], subst m x > loop [[]] x > > let exists_subst_term scope (l : Var list, body) = > let vars = l |> List.map (fun a -> fresh_subst_var scope a.constraints > a.kind) > vars, subst (List.zip l vars) body > > let assert_exists_hasnt_metavars r vars = > if List.exists has_metavars vars then errors.Add(r, > ExistsShouldntHaveMetavars vars) > > let generalize r scope (forall_vars : Var list) (body : T) = > let h = HashSet(HashIdentity.Reference) > List.iter (h.Add >> ignore) forall_vars > let generalized_metavars = ResizeArray() > let rec replace_metavars x = > let f = replace_metavars > match x with > | TyVar (_,{contents=Some x}) > | TyMetavar(_,{contents=Some x}) -> f x > | TyMetavar(x, link) when scope = x.scope -> > let v = tyvar {scope=x.scope; constraints=x.constraints; > kind=kind_force x.kind; name=autogen_name_in_fun > autogened_forallvar_count_in_funs} > autogened_forallvar_count_in_funs <- > autogened_forallvar_count_in_funs+1 > link.Value <- Some v > replace_metavars v > // This scheme with the HashSet is so generalize works for mutually > recursive statements. > | TyVar (v,_) -> if scope = v.scope && h.Add(v) then > generalized_metavars.Add(v) > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ > -> () > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b > | TyUnion(a,_) -> Map.iter (fun _ -> snd >> f) a > | TyRecord a -> Map.iter (fun _ -> f) a > | TyExists(v,a) -> List.iter (h.Add >> ignore) v; f a > | TyForall(v,a) -> (h.Add >> ignore) v; f a > | TyComment(_,a) | TyLayout(a,_) | TyArray a -> f a > | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | > TMText _ -> ()) a > | TyModule _ | TyInl _ -> () > > let f x s = TyForall(x,s) > replace_metavars body > let x = Seq.foldBack f generalized_metavars body |> List.foldBack f > forall_vars |> term_subst > if List.isEmpty forall_vars = false then assert_foralls_used errors r x > x > > let gadt_extract scope (v : T) = > let forall_subst_all_gadt x = > let rec loop m x = > match visit_t x with > | TyForall(a,b) -> > let v = tyvar {a with name=autogen_name_in_typecase > autogened_forallvar_count_in_typecase; scope=scope} > autogened_forallvar_count_in_typecase <- > autogened_forallvar_count_in_typecase+1 > let type_apply_args,b = loop ((a, v) :: m) b > v :: type_apply_args, b > | x -> [[]], subst m x > loop [[]] x > let forall_vars,v = forall_subst_all_gadt v > match v with > | TyFun(a,b,_) -> forall_vars,a,b > | b -> forall_vars,TyB,b > > let inline unify_kind' er r got expected = > let rec loop (a'',b'') = > match visit_tt a'', visit_tt b'' with > | KindType, KindType -> () > | KindFun(a,a'), KindFun(b,b') -> loop (a,b); loop (a',b') > | KindMetavar a, KindMetavar b & b' -> if a <> b then a.contents' <- > Some b' > | KindMetavar link, b | b, KindMetavar link -> link.contents' <- > Some b > | _ -> raise (InferTypeErrorException [[r, er (got, expected)]]) > loop (got, expected) > let unify_kind r got expected = try unify_kind' KindError r got expected > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > let unify_gadt (gadt_links : T option ref ResizeArray option) (r : VSCRange) > (got : T) (expected : T) : unit = > let unify_kind got expected = unify_kind' KindError r got expected > let er () = raise (InferTypeErrorException [[r, TermError(got, > expected)]]) > > let rec constraint_process (con : Constraint Set) b = > let unify_kind got expected = unify_kind' KindErrorInConstraint r > got expected > let body = function > | CUInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T) > | CSInt, TyPrim (Int8T | Int16T | Int32T | Int64T) > | CInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T | > Int16T | Int32T | Int64T) > | CFloat, TyPrim (Float32T | Float64T) > | CNumber, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T > | Int16T | Int32T | Int64T | Float32T | Float64T) > | CPrim, TyPrim _ > | CSymbol, TySymbol _ > | CRecord, TyRecord _ -> [[]] > | con, TyMetavar(x,_) -> x.constraints <- Set.add con > x.constraints; [[]] > | CPrototype prot & con, x -> > match type_apply_split x with > | TyNominal ins, x' -> > match Map.tryFind (prot,ins) > top_env.prototypes_instances with > | Some cons -> > try List.fold2 (fun ers con x -> List.append > (constraint_process con (visit_t x)) ers) [[]] cons x' > with :? System.ArgumentException -> [[]] // This > case can occur due when kind application overflows in a previous expression. > | None -> [[InstanceNotFound(prot,ins)]] > | TyMetavar _ & x, _ -> > [[PrototypeConstraintCannotPropagateToMetavar(prot,x)]] > | TyVar _ & x, _ -> > [[PrototypeConstraintCannotPropagateToVar(prot,x)]] > | _ -> [[ConstraintError(con,x)]] > | con, x -> [[ConstraintError(con,x)]] > > match b with > | TyVar (_,{contents=Some x}) -> constraint_process con x > | TyVar (b,_) -> if con.IsSubsetOf b.constraints = false then > [[ForallVarConstraintError(b.name,con,b.constraints)]] else [[]] > | b -> > let b_kind = tt top_env b > Set.fold (fun ers con -> > unify_kind b_kind (constraint_kind top_env con) > List.append (body (con,b)) ers > ) [[]] con > > // Does occurs checking for recursive metavariables. > // Does scope checking in forall vars. > let validate_mvar_unification i x = > let nested_tvars = HashSet(HashIdentity.Reference) > let rec f x = > match visit_t x with > | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol > _ -> () > | TyMacro a -> a |> List.iter (function TMText _ -> () | > TMLitVar a | TMVar a -> f a) > | TyForall(v,a) | TyInl(v,a) -> > let _ = nested_tvars.Add(v) > f a > let _ = nested_tvars.Remove(v) > () > | TyExists(v,a) -> > v |> List.iter (nested_tvars.Add >> ignore) > f a > v |> List.iter (nested_tvars.Remove >> ignore) > | TyComment(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b > | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l > | TyRecord l -> Map.iter (fun _ -> f) l > | TyVar(b,_) -> if nested_tvars.Contains b = false && i.scope < > b.scope then raise (InferTypeErrorException > [[r,TypeVarScopeError(b.name,got,expected)]]) > | TyMetavar(x,_) -> if i = x then raise (InferTypeErrorException > [[r,RecursiveMetavarsNotAllowed(got,expected)]]) elif i.scope < x.scope then > x.scope <- i.scope > | TyLayout(a,_) -> f a > f x > > // Does occurs checking for recursive type variables. > let rec validate_tvar_unification i x = > let f = validate_tvar_unification i > match visit_t x with > | TyMetavar _ | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ > | TySymbol _ -> () > | TyMacro a -> a |> List.iter (function TMText _ -> () | TMLitVar a > | TMVar a -> f a) > | TyExists(_,a) | TyComment(_,a) | TyForall(_,a) | TyInl(_,a) | > TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b > | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l > | TyRecord l -> Map.iter (fun _ -> f) l > | TyVar(x,_) -> if i = x then raise (InferTypeErrorException > [[r,RecursiveTypevarsNotAllowed(got,expected)]]) > | TyLayout(a,_) -> f a > > let rec loop (a'',b'') = > match visit_t a'', visit_t b'' with > | TyComment(_,a), b | a, TyComment(_,b) -> loop (a,b) > | TyMetavar(a,link), TyMetavar(b,_) & b' -> > if a <> b then > unify_kind a.kind b.kind > b.scope <- min a.scope b.scope > b.constraints <- a.constraints + b.constraints > link.Value <- Some b' > | TyMetavar(a,link), b | b, TyMetavar(a,link) -> > validate_mvar_unification a b > unify_kind a.kind (tt top_env b) > match constraint_process a.constraints b with > | [[]] -> link.Value <- Some b > | constraint_errors -> raise (InferTypeErrorException (List.map > (fun x -> r,x) constraint_errors)) > | TyVar (a,_), TyVar (b,_) when a = b -> () > | TyVar (a,link), b | b, TyVar (a,link) when gadt_links.IsSome -> > validate_tvar_unification a b > unify_kind a.kind (tt top_env b) > match constraint_process a.constraints b with > | [[]] -> link.Value <- Some b; gadt_links.Value.Add(link) > | constraint_errors -> raise (InferTypeErrorException (List.map > (fun x -> r,x) constraint_errors)) > | TyFun(a,a',ta), TyFun(b,b',tb) when ta = tb -> loop (a,b); loop > (a',b') > | TyPair(a,a'), TyPair(b,b') -> loop (a,b); loop (a',b') > | TyApply(a,a',_), TyApply(b,b',_) -> loop (a',b'); loop (a,b) > | TyUnion(l,q), TyUnion(l',q') -> > if q = q' then > let a,b = Map.toArray l, Map.toArray l' > if a.Length <> b.Length then er () > else Array.iter2 (fun (ka,a) (kb,b) -> if ka = kb && fst a = > fst b then loop (snd a,snd b) else er()) a b > else raise (InferTypeErrorException > [[r,UnionTypesMustHaveTheSameLayout]]) > | TyRecord l, TyRecord l' -> > let a,b = Map.toArray l, Map.toArray l' > if a.Length <> b.Length then er () > else > let a = a |> Array.sortBy (fun ((_,k),_) -> k) > let b = b |> Array.sortBy (fun ((_,k),_) -> k) > Array.iter2 (fun (ka,a) (kb,b) -> > if (ka |> snd) = (kb |> snd) > then loop (a,b) > else er() > ) a b > | TyNominal i, TyNominal i' when i = i' -> () > | TyB, TyB -> () > | TyPrim x, TyPrim x' when x = x' -> () > | TyLit a, TyLit b when a = b -> () > | TySymbol x, TySymbol x' when x = x' -> () > | TyArray a, TyArray b -> loop (a,b) > // Note: Unifying these 3 only makes sense if the `expected` is > fully inferred already. > | TyExists(a,b), TyExists(a',b') when > List.length a = List.length a' > && List.forall2 (fun (a : Var) (a' : Var) -> a.kind = > a'.kind && a.constraints = a'.constraints) a a' -> > loop (b, subst (List.map2 (fun a a' -> a', tyvar a) a a') b') > | TyForall(a,b), TyForall(a',b') > | TyInl(a,b), TyInl(a',b') when a.kind = a'.kind && a.constraints = > a'.constraints -> loop (b, subst [[a',tyvar a]] b') > | TyMacro a, TyMacro b -> > List.iter2 (fun a b -> > match a,b with > | TMText a, TMText b when System.Object.ReferenceEquals(a,b) > || a = b -> () > | TMVar a, TMVar b -> loop(a,b) > | _ -> er () > ) a b > | TyLayout(a,a'), TyLayout(b,b') when a' = b' -> loop (a,b) > | _ -> er () > > try loop (got, expected) > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > > let unify range got expected = unify_gadt None range got expected > > let apply_record r s l x = > match visit_t x with > | TySymbol x -> > match l |> Map.tryPick (fun (_, k) v -> if k = x then Some v else > None) with > | Some x -> > let com = match x with TyComment(com,_) -> com | _ -> "" > unify r s x > hover_types.AddHover (r,(x,com)) > | None -> errors.Add(r,RecordIndexFailed x) > | x -> errors.Add(r,ExpectedSymbolAsRecordKey x) > > let assert_bound_vars env a = > let keys_of m = Map.fold (fun s k _ -> Set.add k s) Set.empty m > validate_bound_vars (loc_env top_env) env.constraints (keys_of env.term) > (keys_of env.ty) (Choice1Of2 a) |> errors.AddRange > > let fresh_var scope = fresh_var' scope KindType > > let v_cons env a = Map.tryFind a env |> Option.orElseWith (fun () -> > Map.tryFind a top_env.constraints) > let v env top_env a = Map.tryFind a env |> Option.orElseWith (fun () -> > Map.tryFind a top_env) > let v_term env a = v env.term top_env.term a |> Option.map (function > TyComment(com,x) -> com, visit_t x | x -> "", visit_t x) > let v_ty env a = v env.ty top_env.ty a > > let typevar_to_var scope cons (((_,(name,kind)),constraints) : TypeVar) : > Var = > let rec typevar = function > | RawKindWildcard -> fresh_kind() > | RawKindStar -> KindType > | RawKindFun(a,b) -> KindFun(typevar a, typevar b) > let kind = typevar kind > let cons = > constraints |> List.choose (fun (r,x) -> > match v_cons cons x with > | Some (M _) -> errors.Add(r,ExpectedConstraintInsteadOfModule); > None > | Some (C x) -> unify_kind r kind (constraint_kind top_env x); > Some x > | None -> errors.Add(r,UnboundVariable x); None > ) |> Set.ofList > > {scope=scope; constraints=cons; kind=kind_force kind; name=name} > > let typevars scope env (l : TypeVar list) = > List.mapFold (fun s x -> > let v = typevar_to_var scope env.constraints x > v, Map.add v.name (tyvar v) s > ) env.ty l > > let rec term scope env s x = term' scope false env s x > and term' scope is_in_left_apply (env : InferEnv) s x = > let f = term scope env > let f' x = let v = fresh_var scope in f v x; visit_t v > let f'' x = let v = fresh_var scope in term' scope true env v x; visit_t > v > let inline rawv (r,name,is_tvar_applied) = > match v_term env name with > | None -> errors.Add(r,UnboundVariable name) > | Some (_,TySymbol "<real>") -> errors.Add(r,RealFunctionInTopDown) > | Some (com,TyModule _ & m) when is_in_left_apply = false -> > hover_types.AddHover(r,(m,com)) > errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some (com,a) -> > if is_tvar_applied then > match a with TyForall _ -> annotations.Add(x,(r,s)) | _ -> > () > let f a = let l,v = forall_subst_all scope a in unify r s v; > l > let l = f a > hover_types.AddHover(r,(s,com)) > type_apply_args.Add(name,(l,f)) > else > unify r s a > hover_types.AddHover(r,(s,com)) > let match_clause (q,w) (a,b) = > let gadt_links, gadt_typecases', (scope, env) = pattern scope env q > a > term scope env w b > dispose_gadt_links gadt_links > gadt_typecases.Add(b,gadt_typecases') > match x with > | RawB r -> unify r s TyB > | RawV(r,a,is_tvar_applied) -> rawv (r,a,is_tvar_applied) > | RawDefaultLit(r,_) -> unify r s (fresh_subst_var scope (Set.singleton > CNumber) KindType); hover_types.AddHover(r,(s,"")); annotations.Add(x,(r,s)) > | RawLit(r,a) -> unify r s (lit a) > | RawSymbol(r,x) -> unify r s (TySymbol x) > | RawIfThenElse(_,cond,tr,fl) -> f (TyPrim BoolT) cond; f s tr; f s fl > | RawIfThen(r,cond,tr) -> f (TyPrim BoolT) cond; unify r s TyB; f TyB tr > | RawPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q, w)) > f q a; f w b > | RawSeq(_,a,b) -> f TyB a; f s b > | RawReal(_,a) -> assert_bound_vars env a > | RawOp(_,_,l) -> List.iter (assert_bound_vars env) l > | RawJoinPoint(r,None,a,_) -> annotations.Add(x,(r,s)); f s a > | RawJoinPoint(r,Some _,a,_) -> > unify r s (TyPair(TyPrim Int32T, TySymbol "tuple_of_free_vars")) > let s = fresh_var scope > annotations.Add(x,(r,s)) > f s a > | RawApply(r,a',b) -> > let rec loop = function > | TyNominal _ | TyApply _ as a -> > match type_apply_split a with > | TyNominal i, l -> > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion _ -> errors.Add(r,UnionsCannotBeApplied) > | _ -> > match list_try_zip n.vars l with > | Some l -> loop (subst l n.body) > | None -> errors.Add(r,MalformedNominal) > | _ -> errors.Add(r,ExpectedNominalInApply a) > | TyLayout(a,_) -> > match visit_t a with > | TyRecord l -> apply_record r s l (f' b) > | a -> errors.Add(r,ExpectedRecordInsideALayout a) > | TyRecord l -> apply_record r s l (f' b) > | TyModule l -> > match f' b with > | TySymbol n -> > match Map.tryFind n l with > | Some (TyModule _ as a) -> > if is_in_left_apply then > match b with RawSymbol(r,_) -> > hover_types.AddHover(r,(a,"")) | _ -> () > unify r s a > else errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some a' -> > let typevars,a = forall_subst_all scope a' > if List.isEmpty typevars = false then > annotations.Add(x,(r,s)) > module_type_apply_args.Add(x,typevars) > unify r s a > match b with > | RawSymbol(r,_) -> > let com = match a' with TyComment(com,_) -> com > | _ -> "" > hover_types.AddHover(r,(a,com)) > | _ -> () > | None -> errors.Add(r,ModuleIndexFailed n) > | b -> errors.Add(r,ExpectedSymbolAsModuleKey b) > | TyFun(domain,range,_) -> unify (range_of_expr a') range s; f > domain b > | a -> let v = fresh_var scope in unify (range_of_expr a') a > (TyFun(v,s,FT_Vanilla)); f v b > loop (f'' a') > | RawAnnot(r,a,b) -> ty_init scope env s b; f s a > | RawOpen(_,(r,a),l,on_succ) -> > match module_openInfer (Some hover_types) (loc_env top_env) env.ty r > a l with > | Result.Ok x -> > let combine big small = Map.foldBack Map.add small big > term scope {term = combine env.term x.term; ty = combine env.ty > x.ty; constraints = combine env.constraints x.constraints} s on_succ > | Result.Error e -> errors.Add(e) > | RawRecordWith(r,l,withs,withouts) -> > let i = errors.Count > let withouts,fields = > List.foldBack (fun x (l,s as state) -> > match x with > | RawRecordWithoutSymbol(r,a) -> {|range=r; symbol = a|} :: > l, Set.add a s > | RawRecordWithoutInjectVar(r,a) -> > match v_term env a with > | Some (com, TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); {|range=r; symbol = a|} :: l, Set.add a s > | Some (_,x) -> errors.Add(r, ExpectedSymbolAsRecordKey > x); state > | None -> errors.Add(r, UnboundVariable a); state > ) withouts ([[]],Set.empty) > let withs,_ = > List.foldBack (fun x (l,s as state) -> > let with_symbol ((r,a),b) = {|range=r; symbol = a; > is_blocked=Set.contains a s; is_modify=false; var=fresh_var scope; body=b|} :: > l, Set.add a s > let with_symbol_modify ((r,a),b) = {|range=r; symbol = a; > is_blocked=Set.contains a s; is_modify=true; var=TyFun(fresh_var scope,fresh_var > scope,FT_Vanilla); body=b|} :: l, Set.add a s > let inline with_inject next ((r,a),b) = > match v_term env a with > | Some (com, TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); next ((r,a),b) > | Some (_, x) -> errors.Add(r, ExpectedSymbolAsRecordKey > x); f' b |> ignore; state > | None -> errors.Add(r, UnboundVariable a); f' b |> > ignore; state > match x with > | RawRecordWithSymbol(a,b) -> with_symbol (a,b) > | RawRecordWithSymbolModify(a,b) -> with_symbol_modify (a,b) > | RawRecordWithInjectVar(a,b) -> with_inject with_symbol > (a,b) > | RawRecordWithInjectVarModify(a,b) -> with_inject > with_symbol_modify (a,b) > ) withs ([[]],fields) > > let eval m = > let m = (m,withs) ||> List.fold (fun m x -> > if x.is_modify then > let i, q = > match m |> Map.tryPick (fun (i, k) v -> if k = > x.symbol then Some (i, v) else None) with > | Some q -> q > | None -> errors.Add(x.range,RecordIndexFailed > x.symbol); m.Count, fresh_var scope > let w = fresh_var scope > unify x.range (TyFun(q,w,FT_Vanilla)) x.var > f x.var x.body > Map.add (i, x.symbol) w m > else > f x.var x.body > let i = > m > |> Map.tryPick (fun (i, k) v -> if k = x.symbol then > Some i else None) > |> Option.defaultValue m.Count > Map.add (i, x.symbol) x.var m > ) > withouts |> List.fold (fun m x -> m |> Map.filter (fun (_, k) _ > -> k <> x.symbol)) m > > let bind s = withs |> List.iter (fun x -> > if x.is_blocked = false then > if x.is_modify then > s > |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then > Some (i, v) else None) > |> Option.iter (fun (_, k) -> unify x.range x.var > (TyFun(fresh_var scope,k,FT_Vanilla))) > else > s > |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then > Some (i, v) else None) > |> Option.iter (fun (_, k) -> k |> unify x.range x.var) > ) > > let rec tail' m = function > | x :: xs -> > match f' x with > | TySymbol k -> > match m |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None) with > | Some (i, m) -> > match visit_t m with > | TyRecord m -> tail' m xs > | m -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); eval Map.empty > | _ -> errors.Add(range_of_expr x, RecordIndexFailed k); > eval Map.empty > |> fun v -> > let i = m |> Map.tryPick (fun (i, k') v -> if k' = k > then Some (i, v) else None) > match i with > | Some (i, _) -> Map.add (i, k) (TyRecord v) m > | None -> Map.add (m.Count, k) (TyRecord v) m > | TyMetavar _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a -> errors.Add(range_of_expr x, > ExpectedSymbolInRecordWith a); eval Map.empty > | [[]] -> eval m > > let rec tail (m,s) = function > | x :: xs -> > match f' x with > | TySymbol k -> > match > m |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None), > s |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None) > with > | Some (i,m), Some (_i',s) -> > match visit_t m, visit_t s with > | TyRecord m, TyRecord s -> i, tail (m,s) xs > | TyRecord m, _ -> i, tail' m xs > | m, _ -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); i, eval Map.empty > | Some (i,m), None -> > match visit_t m with > | TyRecord m -> i, tail' m xs > | m -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); i, eval Map.empty > | _ -> errors.Add(range_of_expr x, RecordIndexFailed k); > i, eval Map.empty > |> fun (i,v) -> Map.add (i,k) (TyRecord v) m > | TyMetavar _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a -> errors.Add(range_of_expr x, > ExpectedSymbolInRecordWith a); eval Map.empty > | [[]] -> bind s; eval m > > match l with > | [[]] -> > match visit_t s with TyRecord s -> bind s | _ -> () > eval Map.empty > | m :: l -> > match f' m, visit_t s with > | TyRecord m, TyRecord s -> tail (m,s) l > | TyRecord m, _ -> tail' m l > | TyMetavar _, _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a,_ -> errors.Add(range_of_expr x, ExpectedRecord a); eval > Map.empty > |> fun v -> if errors.Count = i then unify r (TyRecord v) s > | RawExists(r,(r',l),body) -> > match visit_t s with > | TyExists(type_vars,type_body) -> > let vars, s = exists_subst_term scope (type_vars,type_body) > l |> Option.iter (fun l -> > let l1,l2 = vars.Length, l.Length > if l1 = l2 then List.iter2 (ty_init scope env) vars l > else errors.Add(r', > UnexpectedNumberOfArgumentsInExistsBody(l1,l2)) > ) > term scope env s body > assert_exists_hasnt_metavars (range_of_expr x) vars > exists_vars.Add(x,vars) > | s -> errors.Add(r, ExpectedExistentialInTerm s); f (fresh_var > scope) body > | RawFun(r,l) -> > annotations.Add(x,(r,s)) > let q,w = fresh_var scope, fresh_var scope > unify r s (TyFun(q,w,FT_Vanilla)) > List.iter (match_clause (q,w)) l > | RawForall _ -> failwith "Compiler error: Should be handled in let > statements." > | RawMatch(_,(RawForall _ | RawFun _) & body,[[PatVar(r,name), > on_succ]]) -> term scope (inl scope env ((r, name), body)) s on_succ > | RawRecBlock(_,l',on_succ) -> term scope (rec_block scope env l') s > on_succ > | RawMatch(_,body,l) -> > let body_var = fresh_var scope > f body_var body > List.iter (match_clause (body_var,s)) l > | RawMissingBody r -> errors.Add(r,MissingBody) > | RawMacro(r,a) -> > annotations.Add(x,(r,s)) > List.iter (function > | RawMacroText _ -> () > | RawMacroTerm(_,a) -> term scope env (fresh_var scope) a > | RawMacroType(_,a) | RawMacroTypeLit(_,a) -> ty_init scope env > (fresh_var scope) a > ) a > | RawHeapMutableSet(r,a,b,c) -> > unify r s TyB > try let v = fresh_var scope > let i = errors.Count > f v a > match visit_t v with > | TyMetavar _ -> raise (InferTypeErrorException [[r, > LayoutSetMustBeAnnotated]]) > | TyLayout(v,lay) -> > match lay with > | HeapMutable | StackMutable -> > if i <> errors.Count then raise (InferTypeErrorException > [[]]) > let b = List.map (fun x -> range_of_expr x, f' x) b > List.fold (fun (r,a') (r',b') -> > match visit_t a' with > | TyRecord a -> > match b' with > | TySymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k > = b then Some v else None) with > | Some x -> r', x > | _ -> raise (InferTypeErrorException [[r, > RecordIndexFailed b]]) > | b -> raise (InferTypeErrorException [[r', > ExpectedSymbol' b]]) > | a -> raise (InferTypeErrorException [[r, > ExpectedRecord a]]) > ) (range_of_expr a, v) b |> snd > | Heap -> raise (InferTypeErrorException [[r, > ExpectedMutableLayout v]]) > | v -> raise (InferTypeErrorException [[r, ExpectedMutableLayout > v]]) > with :? InferTypeErrorException as e -> errors.AddRange e.Data0; > fresh_var scope > |> fun v -> f v c > | RawArray(r,a) -> > annotations.Add(x,(r,s)) > let v = fresh_var scope > unify r s (TyArray v) > List.iter (f v) a > | RawFilledForall _ -> failwith "Compiler error: Should not manifest > during type inference." > | RawType _ -> failwith "Compiler error: RawType should not appear in > the top down segment." > | RawTypecase _ -> failwith "Compiler error: `typecase` should not > appear in the top down segment." > and inl scope env ((r, name), body) = > let scope = scope + 1 > let vars,body = foralls_get body > vars |> List.iter (fun ((r,(name,_)),_) -> if Map.containsKey name > env.ty then errors.Add(r,ShadowedForall)) > let vars,env_ty = typevars scope env vars > let body_var = fresh_var scope > term scope {env with ty = env_ty} body_var body > let t = generalize r scope vars body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term } > and rec_block scope env l' = > let rec term_annotations scope env x = > let f t = > let i = errors.Count > let v = fresh_var scope > ty_init scope env v t > if i = errors.Count && has_metavars v then > errors.Add(range_of_texpr t, RecursiveAnnotationHasMetavars v) > v > match x with > | RawFun(_,[[(PatAnnot(_,_,t) | PatDyn(_,PatAnnot(_,_,t))),body]]) > -> TyFun(f t, term_annotations scope env body,FT_Vanilla) > | RawFun(_,[[pat,body]]) -> errors.Add(range_of_pattern pat, > ExpectedAnnotation); TyFun(fresh_var scope, term_annotations scope env > body,FT_Vanilla) > | RawFun(r,_) -> errors.Add(r, ExpectedSinglePattern); > TyFun(fresh_var scope, fresh_var scope, FT_Vanilla) > | RawJoinPoint(_,_,RawAnnot(_,_,t),_) | RawAnnot(_,_,t) -> f t > | x -> errors.Add(range_of_expr x,ExpectedAnnotation); fresh_var > scope > let scope = scope + 1 > let has_foralls = List.exists (function (_,RawForall _) -> true | _ -> > false) l' > let l,m = > if has_foralls then > List.mapFold (fun s ((r,name),body) -> > let vars,body = foralls_get body > vars |> List.iter (fun x -> if Map.containsKey (typevar_name > x) env.ty then errors.Add(range_of_typevar x,ShadowedForall)) > let vars, env_ty = typevars scope env vars > let body_var = term_annotations scope {env with ty = env_ty} > body > let term env = term scope {env with ty = env_ty} body_var > body > let gen env : InferEnv = > let t = generalize r scope vars body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term} > let ty = List.foldBack (fun x s -> TyForall(x,s)) vars > body_var |> term_subst > (term, gen), Map.add name ty s > ) env.term l' > else > List.mapFold (fun s ((r,name),body) -> > let body_var = fresh_var scope > let term env = term scope env body_var body > let gen env : InferEnv = > let t = generalize r scope [[]] body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term} > (term, gen), Map.add name body_var s > ) env.term l' > let _ = > let env = {env with term = m} > List.iter (fun (term, _) -> term env) l > List.fold (fun env (_, gen) -> gen env) env l > and ty_init scope env s x = > ty scope env s x > assert_foralls_used errors (range_of_texpr x) s > and ty scope env s x = ty' scope false env s x > and ty' scope is_in_left_apply (env : InferEnv) s x = > let f s x = ty scope env s x > match x with > | RawTTypecase _ -> failwith "Compiler error: Type level typecase should > not appear in the top down segment." > | RawTWildcard r -> hover_types.AddHover(r,(s,"")) > | RawTArray(r,a) -> > let v = fresh_var scope > unify r s (TyArray v) > f v a > | RawTVar(r,x) -> > match v_ty env x with > | Some (TyModule _ & m) when is_in_left_apply = false -> > hover_types.AddHover(r,(m,"")); errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some x -> unify r s x; hover_types.AddHover(r,(x,"")) > | None -> errors.Add(r, UnboundVariable x) > | RawTB r -> unify r s TyB > | RawTLit(r,x) -> unify r s (TyLit x) > | RawTSymbol(r,x) -> unify r s (TySymbol x) > | RawTPrim(r,x) -> unify r s (TyPrim x) > | RawTPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q,w)) > f q a; f w b > | RawTFun(r,a,b,t) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyFun(q,w,t)) > f q a; f w b > | RawTRecord(r,l) -> > let l' = Map.map (fun _ _ -> fresh_var scope) l > unify r s (TyRecord l') > Map.iter (fun k s -> f s l.[[k]]) l' > | RawTUnion(r,l,lay,_) -> > let l' = Map.map (fun _ (is_gadt,_) -> is_gadt, fresh_var scope) l > unify r s (TyUnion(l',lay)) > Map.iter (fun k (is_gadt,s) -> let x = snd l.[[k]] in if is_gadt > then ty scope {env with ty = Map.empty} s x else f s x) l' > | RawTExists(r,a,b) -> > let a = List.map (typevar_to_var scope env.constraints) a > let body_var = fresh_var scope > ty scope {env with ty = List.fold (fun s a -> Map.add a.name (tyvar > a) s) env.ty a} body_var b > unify r s (TyExists(a, body_var)) > | RawTForall(r,a,b) -> > let a = typevar_to_var scope env.constraints a > let body_var = fresh_var scope > ty scope {env with ty = Map.add a.name (tyvar a) env.ty} body_var b > unify r s (TyForall(a, body_var)) > | RawTApply(r,a',b) -> > let f' b k x = let v = fresh_var' scope k in ty' scope b env v x; > visit_t v > match f' true (fresh_kind ()) a' with > | TyModule l -> > match f' false KindType b with > | TySymbol x -> > match Map.tryFind x l with > | Some (TyModule _ as a) -> > if is_in_left_apply then > unify r s a > match b with RawTSymbol(r,_) -> > hover_types.AddHover(r,(a,"")) | _ -> () > else errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some a -> > unify r s a > match b with > | RawTSymbol(r,_) -> > let com = match a with TyComment(com,_) -> com | _ > -> "" > hover_types.AddHover(r,(a,com)) > | _ -> () > | None -> errors.Add(r,ModuleIndexFailed x) > | b -> errors.Add(r,ExpectedSymbolAsRecordKey b) > | TyInl(a,body) -> let v = fresh_var' scope a.kind in f v b; unify r > s (subst [[a,v]] body) > | a -> > let q,w = fresh_kind(), fresh_kind() > unify_kind (range_of_texpr a') (tt top_env a) (KindFun(q,w)) > let x = fresh_var' scope q > f x b > unify r s (TyApply(a,x,w)) > | RawTTerm(r,a) -> assert_bound_vars env a; unify r s (TySymbol > "<term>") > | RawTMacro(r,a) -> > List.map (function > | RawMacroText(_,a) -> TMText a > | RawMacroTerm _ -> failwith "Compiler error: Term vars should > never appear at the type level." > | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> let v = fresh_var > scope in f v a; TMVar v > ) a > |> TyMacro |> unify r s > | RawTLayout(r,a,b) -> > let v = fresh_var scope > unify r s (TyLayout(v,b)) > f v a > | RawTFilledNominal _ -> failwith "Compiler error: RawTNominal should be > filled in by the inferencer." > | RawTMetaVar _ -> failwith "Compiler error: This particular metavar is > only for typecase's clauses. This happens during the bottom-up segment." > and pattern (scope : InferScope) (env : InferEnv) s a : T option ref > ResizeArray * (T * T list * T) ResizeArray * (InferScope * InferEnv) = > let gadt_links = ResizeArray() > let gadt_typecases = ResizeArray() > let term_vars = Dictionary(HashIdentity.Structural) > let ty_vars = Dictionary(HashIdentity.Structural) > let mutable scope = scope > let update_env () = > scope, > {env with > ty = (env.ty,ty_vars) ||> Seq.fold (fun s x -> Map.add x.Key > x.Value s) > term = (env.term,term_vars) ||> Seq.fold (fun s x -> Map.add > x.Key x.Value s) > } > let ho_make (i : GlobalId) (l : Var list) = > let h = TyNominal i > let l' = List.map (fun (x : Var) -> x, fresh_subst_var scope > x.constraints x.kind) l > List.fold (fun s (_,x) -> match tt top_env s with KindFun(_,k) -> > TyApply(s,x,k) | _ -> failwith "impossible") h l', l' > let rec ho_index x = > match visit_t x with > | TyApply(a,_,_) -> ho_index a > | TyNominal i -> ValueSome i > | _ -> ValueNone > let rec ho_fun x = > match visit_t x with > | TyFun(_,a,_) | TyForall(_,a) -> ho_fun a > | a -> ho_index a > let rec loop s x : unit = > let f = loop > match x with > | PatFilledDefaultValue _ -> failwith "Compiler error: > PatDefaultValueFilled should not appear during inference." > | PatB r -> unify r s TyB > | PatE r -> hover_types.AddHover(r,(s,"")) > | PatVar(r,a) -> > match term_vars.TryGetValue(a) with > | true, v -> unify r s v > | _ -> term_vars.Add(a,s) > hover_types.AddHover(r,(s,"")) > | PatDyn(_,a) -> f s a > | PatAnnot(_,a,b) -> ty_init scope env s b; f s a > | PatWhen(_,a,b) -> > f s a > let scope,env = update_env() > term scope env (TyPrim BoolT) b > | PatPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q,w)) > loop q a; loop w b > | PatSymbol(r,a) -> unify r s (TySymbol a) > | PatOr(_,a,b) | PatAnd(_,a,b) -> loop s a; loop s b > | PatValue(r,a) -> unify r s (lit a) > | PatDefaultValue(r,_) -> > annotations.Add(x,(r,s)) > unify r s (fresh_subst_var scope (Set.singleton CNumber) > KindType) > hover_types.AddHover(r,(s,"")) > | PatRecordMembers(r,l) -> > let l = > List.choose (function > | PatRecordMembersSymbol((r,a),b) -> Some (a,b) > | PatRecordMembersInjectVar((r,a),b) -> > match v_term env a with > | Some (com,TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); Some (a,b) > | Some (_,x) -> errors.Add(r, > ExpectedSymbolAsRecordKey x); None > | None -> errors.Add(r, UnboundVariable a); None > ) l > match visit_t s with > | TyRecord l' as s -> > let l, missing = > List.mapFoldBack (fun (a,b) missing -> > match l' |> Map.tryPick (fun (i, k) v -> if k = a > then Some (i, v) else None) with > | Some (_,x) -> (x,b), missing > | None -> (fresh_var scope,b), a :: missing > ) l [[]] > if List.isEmpty missing = false then errors.Add(r, > MissingRecordFieldsInPattern(s, missing)) > List.iter (fun (a,b) -> loop a b) l > | s -> > let l = > List.mapi (fun i (a,b) -> > let v = fresh_var scope > loop v b > (i, a), v > ) l > unify r s (l |> Map |> TyRecord) > | PatExists(r,l,p) -> > l |> List.iter (fun (r,name) -> if Map.containsKey name env.ty > then errors.Add(r,ShadowedExists)) > match visit_t s with > | TyExists(type_var_list,type_body) -> > if l.Length = type_var_list.Length then > scope <- scope + 1 > let vars = (l, type_var_list) ||> List.map2 (fun > (_,name) l -> > memoize ty_vars (fun name -> tyvar {l with > scope=scope; name=name}) name > ) > loop (subst (List.zip type_var_list vars) type_body) p > else > errors.Add(r, > UnexpectedNumberOfArgumentsInExistsPattern(l.Length,type_var_list.Length)) > | s -> errors.Add(r, ExpectedExistentialInPattern s) > | PatUnbox(r,name,a) -> > let assume i = > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion(cases,_) -> > let x,m = ho_make i n.vars > unify r s x > match Map.tryPick (fun (_, name') v -> if name = name' > then Some v else None) cases with > | Some (is_gadt, v) -> > if is_gadt then > scope <- scope + 1 > let forall_vars,body,specialized_constructor = > gadt_extract scope v > gadt_typecases.Add(s, forall_vars, > specialized_constructor) > match a with PatE r' when r = r' -> () | _ -> > loop body a // This check for PatE is so the hovers for it don't overwrite the > main pattern. > unify_gadt (Some gadt_links) r s > specialized_constructor > else > match a with PatE r' when r = r' -> () | _ -> f > (subst m v) a > hover_types.AddHover(r,(s,"")) > | None -> > errors.Add(r,CasePatternNotFoundForType(i,name)); f (fresh_var scope) a > | _ -> errors.Add(r,NominalInPatternUnbox i); f (fresh_var > scope) a > match ho_index s with > | ValueSome i -> assume i > | ValueNone -> > match v_term env name with > | Some (_,x) -> > match ho_fun x with > | ValueSome i -> assume i > | ValueNone -> > errors.Add(r,CannotInferCasePatternFromTermInEnv x); f (fresh_var scope) a > | None -> errors.Add(r,CasePatternNotFound name); f > (fresh_var scope) a > | PatNominal(_,(r,name),l,a) -> > match v_ty env name with > | Some x -> > let rec loop r x = function > | (r,name) :: l -> > match x with > | TyModule x -> > match Map.tryFind name x with > | Some x -> loop r x l > | None -> errors.Add(r,ModuleIndexFailed name); > f (fresh_var scope) a > | _ -> > errors.Add(r,ExpectedModule x); f (fresh_var > scope) a > | [[]] -> > match ho_index x with > | ValueSome i -> > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion _ -> > errors.Add(r,UnionInPatternNominal i); f (fresh_var scope) a > | _ -> let x,m = ho_make i n.vars in unify r s > x; f (subst m n.body) a > | ValueNone -> errors.Add(r,TypeInEnvIsNotNominal > x); f (fresh_var scope) a > loop r x l > | _ -> errors.Add(r,UnboundVariable name); f (fresh_var scope) a > | PatArray(r,a) -> > let v = fresh_var scope > unify r s (TyArray v) > List.iter (fun x -> loop v x) a > loop s a > gadt_links, gadt_typecases, update_env() > > let nominal_term global_id tt name vars v = > let constructor body = > let t,_ = List.fold (fun (a,k) b -> let k = trim_kind k in > TyApply(a,tyvar b,k),k) (TyNominal global_id,tt) vars > let x = match body with TyB -> t | _ -> TyFun(body,t,FT_Vanilla) > List.foldBack (fun var ty -> TyForall(var,ty)) vars x > match v with > | TyUnion(l,_) -> Map.fold (fun s (_,name) (is_gadt,v) -> Map.add name > (if is_gadt then v else constructor v) s) Map.empty l > | _ -> Map.add name (constructor v) Map.empty > > let psucc = Hopac.Job.thunk >> Hopac.Hopac.memo > let pfail = Hopac.Promise.Now.withFailure (System.Exception "Compiler error: > Tried to read from a FilledTop that has errors.") > > let top_env_nominal top_env (global_id : GlobalId) tt name vars v : TopEnv = > { top_env with > nominals_next_tag = max top_env.nominals_next_tag global_id.tag + 1 > nominals_aux = Map.add global_id {|kind=tt; name=name|} > top_env.nominals_aux > nominals = Map.add global_id {|vars=vars; body=v|} top_env.nominals > term = Map.foldBack Map.add (nominal_term global_id tt name vars v) > top_env.term > ty = Map.add name (TyNominal global_id) top_env.ty > } > > let rec typevar = function > | RawKindWildcard | RawKindStar -> KindType > | RawKindFun(a,b) -> KindFun(typevar a, typevar b) > let hovars (x : HoVar list) = > List.mapFold (fun s (_,(n,t)) -> > let v = {scope=0; kind=typevar t; name=n; constraints=Set.empty} > v, Map.add n (tyvar v) s > ) Map.empty x > > let scope = 0 > let bundle_nominal_rec l' = > let l,_ = > List.mapFold (fun i (_,name,vars,body) -> > let l,env = hovars vars > let tt = List.foldBack (fun (x : Var) s -> KindFun(x.kind,s)) l > KindType > (at_tag i,name,l,env,tt,body), i+1 > ) top_env.nominals_next_tag l' > > top_env <- > {top_env with > nominals_aux = (top_env.nominals_aux, l) ||> List.fold (fun s > (i,(_,name),_,_,tt,_) -> Map.add i {|name=name; kind=tt|} s) > ty = (top_env.ty, l) ||> List.fold (fun s (i,(_,name),_,_,_,_) > -> Map.add name (TyNominal i) s) > } > > List.fold (fun top_env (global_id,(r,name),vars,env_ty,tt,body) -> > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v > body > let v = term_subst v > validate_nominal errors global_id body v > top_env_nominal top_env global_id tt name vars v > ) top_env_emptyInfer l > > match expr with > | BundleType(q,(r,name),vars',expr) -> > let vars,env_ty = hovars vars' > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr > let t = List.foldBack (fun x s -> TyInl(x,s)) vars (term_subst v) > hover_types.AddHover(r,(t,"")) > if 0 = errors.Count then psucc (fun () -> FType(q,(r,name),vars',expr)), > AInclude {top_env_emptyInfer with ty = Map.add name t Map.empty} > else pfail, AInclude top_env_emptyInfer > | BundleNominal(q,(r,name),vars',expr) -> > let x = bundle_nominal_rec [[q,(r,name),vars',expr]] > if 0 = errors.Count then psucc (fun () -> > FNominal(q,(r,name),vars',expr)), AInclude x > else pfail, AInclude top_env_emptyInfer > | BundleNominalRec l -> > let _ = // Checks that mutually recursive unions do not have duplicates. > let h = HashSet() > l |> List.iter (fun (_,_,_,x) -> > match x with > | RawTUnion(_,l,_,_) -> l |> Map.iter (fun k v -> if h.Add k = > false then errors.Add(range_of_texpr (snd v),DuplicateKeyInRecUnion)) > | _ -> () > ) > let x = bundle_nominal_rec l > if 0 = errors.Count then psucc (fun () -> FNominalRec l), AInclude x > else pfail, AInclude top_env_emptyInfer > | BundlePrototype(com,r,(r',name),(w,var_init),vars',expr) -> > let i = at_tag top_env'.prototypes_next_tag > let cons = CPrototype i > let scope = 0 > let vars,env_ty = typevars scope {term=Map.empty; constraints=Map.empty; > ty=Map.empty} vars' > let kind = List.foldBack (fun (k : Var) s -> KindFun(k.kind,s)) vars > KindType > let v' = {scope=scope; constraints=Set.singleton cons; name=var_init; > kind=kind} > let env_ty = Map.add var_init (tyvar v') env_ty > let vars = v' :: vars > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr > let body = List.foldBack (fun a b -> TyForall(a,b)) vars (term_subst v) > if 0 = errors.Count && (assert_foralls_used errors r' body; 0 = > errors.Count) then > let x = > { top_env_emptyInfer with > prototypes_next_tag = i.tag + 1 > prototypes = Map.add i {|name=name; signature=body; > kind=v'.kind|} Map.empty > term = Map.add name (if com <> "" then TyComment(com,body) > else body) Map.empty > constraints = Map.add name (C cons) Map.empty > } > psucc (fun () -> FPrototype(r,(r',name),(w,var_init),vars',expr)), > AInclude x > else pfail, AInclude top_env_emptyInfer > | BundleInl(com,q,(_,name as w),a,true) -> > let env = inl scope {term=Map.empty; ty=Map.empty; > constraints=Map.empty} (w,a) > let term = > let x = env.term.[[name]] > if com <> "" then TyComment(com, x) else x > (if 0 = errors.Count then psucc (fun () -> FInl(q,w,fill q Map.empty a)) > else pfail), > AInclude { top_env_emptyInfer with term = Map.add name term Map.empty} > | BundleInl(com,q,(_,name as w),a,false) -> > assert_bound_vars {term=Map.empty; ty=Map.empty; constraints=Map.empty} > a > (if 0 = errors.Count then psucc (fun () -> FInl(q,w,a)) else pfail), > AInclude { top_env_emptyInfer with term = Map.add name (TySymbol > "<real>") Map.empty } > | BundleRecInl(l,is_top_down) -> > let _ = > let h = HashSet() > List.iter (fun (_,_,(r,n),_) -> if h.Add n = false then > errors.Add(r,DuplicateRecInlName)) l > let env_term = > if is_top_down then > let l = List.map (fun (com,_,a,b) -> a,b) l > (rec_block scope {term=Map.empty; ty=Map.empty; > constraints=Map.empty} l).term > else > let env_term = List.fold (fun s (com,_,(_,a),_) -> Map.add a > (TySymbol "<real>") s) Map.empty l > l |> List.iter (fun (com,_,_,x) -> assert_bound_vars {term = > env_term; ty = Map.empty; constraints=Map.empty} x) > env_term > let filled_top = > if 0 = errors.Count then > if is_top_down then psucc (fun () -> FRecInl(List.map (fun > (_,a,b,c) -> a,b,fill a env_term c) l)) > else psucc (fun () -> FRecInl(List.map (fun (_,a,b,c) -> a,b,c) > l)) > else pfail > let env_term = > List.fold (fun env_term (com,_,(_,n),_) -> > if com <> "" then Map.add n (TyComment(com, Map.find n > env_term)) env_term else env_term > ) env_term l > filled_top, AInclude (Map.fold (fun s k v -> {s with term = Map.add k v > s.term}) top_env_emptyInfer env_term) > | BundleInstance(r,prot,ins,vars,body) -> > let fail = pfail,AInclude top_env_emptyInfer > let assert_no_kind x = x |> List.iter (fun ((r,(_,k)),_) -> match k with > RawKindWildcard -> () | _ -> errors.Add(r,KindNotAllowedInInstanceForall)) > let assert_vars_count vars_count vars_expected = if vars_count <> > vars_expected then > errors.Add(r,InstanceCoreVarsShouldMatchTheArityDifference(vars_count,vars_expec > ted)) > let assert_kind_compatibility got expected = > try unify_kind' InstanceKindError r got expected > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > let assert_kind_arity prot_kind_arity ins_kind_arity = if ins_kind_arity > < prot_kind_arity then > errors.Add(r,InstanceArityError(prot_kind_arity,ins_kind_arity)) > let assert_instance_forall_does_not_shadow_prototype_forall > prot_forall_name = List.iter (fun ((r,(a,_)),_) -> if a = prot_forall_name then > errors.Add(r,InstanceVarShouldNotMatchAnyOfPrototypes)) vars > let assert_orphan_shadow_check (prot_id : GlobalId) (ins_id : GlobalId) > = > // if Map.containsKey (prot_id, ins_id) top_env.prototypes_instances > // then errors.Add(r,ShadowedInstance) > () > let assert_orphan_instance_check (prot_id : GlobalId) (ins_id : > GlobalId) = > // if (prot_id.package_id = package_id || ins_id.package_id = > package_id) = false then errors.Add(r,OrphanInstance) > () > let body prot_id ins_id = > let ins_kind' = top_env.nominals_aux.[[ins_id]].kind > let guard next = if 0 = errors.Count then next () else fail > let ins_kind = kind_get ins_kind' > let prototype = top_env.prototypes.[[prot_id]] > hover_types.AddHover(fst prot, (prototype.signature,"")) // TODO: > Add the hover for the instance signature. > let prototype_init_forall_kind = prototype_init_forall_kind > prototype.signature > let prot_kind = kind_get prototype_init_forall_kind > assert_kind_arity prot_kind.arity ins_kind.arity > guard <| fun () -> > let vars_expected = ins_kind.arity - prot_kind.arity > assert_kind_compatibility (List.skip vars_expected ins_kind.args |> > List.reduceBack (fun a b -> KindFun(a,b))) prototype_init_forall_kind > guard <| fun () -> > assert_vars_count (List.length vars) vars_expected > guard <| fun () -> > assert_no_kind vars > guard <| fun () -> > let ins_vars, env_ty = > List.mapFold (fun s (((r,_),_) & x,k) -> > let v = {typevar_to_var scope Map.empty x with kind = k} > let x = tyvar v > hover_types.AddHover(r,(x,"")) > x, Map.add v.name x s > ) Map.empty (List.zip vars (List.take vars_expected > ins_kind.args)) > let ins_constraints = ins_vars |> List.map (visit_t >> function > TyVar (x,_) -> x.constraints | _ -> failwith "impossible") > let ins_core, _ = List.fold (fun (a,k) (b : T) -> let k = trim_kind > k in TyApply(a,b,k),k) (TyNominal ins_id,ins_kind') ins_vars > let env_ty, prot_body = > match foralls_ty_get prototype.signature with > | (prot_core :: prot_foralls), prot_body -> > List.fold (fun ty x -> > assert_instance_forall_does_not_shadow_prototype_forall > x.name > Map.add x.name (tyvar x) ty) env_ty prot_foralls, > let prot_body = subst [[prot_core, ins_core]] prot_body > let _ = > List.foldBack (fun x s -> TyForall(x,s)) prot_foralls > prot_body > |> List.foldBack (fun x s -> match visit_t x with > TyVar(x,_) -> TyForall(x,s) | _ -> failwith "impossible") ins_vars > |> fun x -> generalized_statements.Add(body,x) > prot_body > | _ -> failwith "impossible" > assert_orphan_shadow_check prot_id ins_id > assert_orphan_instance_check prot_id ins_id > guard <| fun () -> > top_env <- {top_env with prototypes_instances = Map.add > (prot_id,ins_id) ins_constraints top_env.prototypes_instances} > term scope {term=Map.empty; ty=env_ty; constraints=Map.empty} > prot_body body > (if 0 = errors.Count then psucc (fun () -> FInstance(r,(fst prot, > prot_id),(fst ins, ins_id),fill r Map.empty body)) else pfail), > AInclude {top_env_emptyInfer with prototypes_instances = Map.add > (prot_id,ins_id) ins_constraints Map.empty} > > let fake _ = fail > let check_ins on_succ = > match Map.tryFind (snd ins) top_env.ty with > | None -> errors.Add(fst ins, UnboundVariable (snd ins)); fail > | Some(TyNominal i') -> on_succ i' > | Some x -> errors.Add(fst ins, ExpectedHigherOrder x); fail > match Map.tryFind (snd prot) top_env.constraints with > | None -> errors.Add(fst prot, UnboundVariable (snd prot)); check_ins > fake > | Some(C (CPrototype i)) -> check_ins (body i) > | Some(C x) -> errors.Add(fst prot, ExpectedPrototypeConstraint x); > check_ins fake > | Some(M _) -> errors.Add(fst prot, ExpectedPrototypeInsteadOfModule); > check_ins fake > | BundleOpen(q,(r,a),b) -> > match module_openInfer (Some hover_types) (loc_env top_env) Map.empty r > a b with > | Result.Ok x -> psucc (fun () -> FOpen(q,(r,a),b)), AOpen > {top_env_emptyInfer with term=x.term; ty=x.ty; constraints=x.constraints} > | Result.Error er -> errors.Add(er); pfail, AOpen top_env_emptyInfer > |> fun (filled_top, top_env_additions) -> > if 0 = errors.Count then > annotations |> Seq.iter (fun (KeyValue(_,(r,x))) -> if has_metavars > x then errors.Add(r, ValueRestriction x)) > { > filled_top = filled_top > top_env_additions = top_env_additions > offset = bundle_range expr |> fst |> fun x -> x.line > hovers = hover_types.ToArray() |> Array.map (fun ((a:VSCRange),(b,(com : > string))) -> a, let b = show_t top_env b in if com <> "" then sprintf > "%s\n---\n%s" b com else b) > errors = errors |> Seq.toList |> List.map (fun (a,b) -> a, > show_type_error top_env b) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### base_types > > ── fsharp ────────────────────────────────────────────────────────────────────── > let base_types (default_env : DefaultEnv) = > let var name = {scope=0; kind=KindType; constraints=Set.empty; name=name} > let inline inl f = let x = var "x" in TyInl(x,f x) > let inline inl2 f = let x,y = var "x", var "y" in TyInl(x,TyInl(y,f x y)) > [[ > "i8", TyPrim Int8T > "i16", TyPrim Int16T > "i32", TyPrim Int32T > "i64", TyPrim Int64T > "u8", TyPrim UInt8T > "u16", TyPrim UInt16T > "u32", TyPrim UInt32T > "u64", TyPrim UInt64T > "f32", TyPrim Float32T > "f64", TyPrim Float64T > "string", TyPrim StringT > "bool", TyPrim BoolT > "char", TyPrim CharT > "array_base", inl (fun x -> TyArray(tyvar x)) > "heap", inl (fun x -> TyLayout(tyvar x,Layout.Heap)) > "mut", inl (fun x -> TyLayout(tyvar x,Layout.HeapMutable)) > "stack_mut", inl (fun x -> TyLayout(tyvar x,Layout.StackMutable)) > "fptr", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Pointer)) > "closure", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Closure)) > "int", TyPrim default_env.default_int > "uint", TyPrim default_env.default_uint > "float", TyPrim default_env.default_float > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_defaultInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_defaultInfer default_env : TopEnv = > // Note: `top_env_default` should have no nominals, prototypes or terms. > {top_env_emptyInfer with > ty = Map.ofList (base_types default_env) > constraints = > [[ > "uint", CUInt > "sint", CSInt > "int", CInt > "float", CFloat > "number", CNumber > "prim", CPrim > "record", CRecord > "symbol", CSymbol > ]] |> Map.ofList |> Map.map (fun _ -> C) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PartEvalPrepass > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Id > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Id = int32 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ScopeEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ScopeEnv = {|free_vars : int [[]]; stack_size : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Scope > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Scope = {term : ScopeEnv; ty : ScopeEnv} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Range > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Range = {path : string; range : VSCRange} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Macro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Macro = > | MText of string > | MTerm of E > | MType of TPrepass > | MLitType of TPrepass > and TypeMacro = > | TMText of string > | TMType of TPrepass > | TMLitType of TPrepass > and RecordWith = > | RSymbol of (Range * string) * E > | RSymbolModify of (Range * string) * E > | RVar of (Range * E) * E > | RVarModify of (Range * E) * E > and RecordWithout = > | WSymbol of Range * string > | WVar of Range * E > and PatRecordMemberPrepass = > | Symbol of (Range * string) * Id > | Var of (Range * E) * Id > and [[<ReferenceEquality>]] E = > | EFun of Range * Id * E * TPrepass option > | EFun' of Range * Scope * Id * E * TPrepass option > | EForall of Range * Id * E > | EForall' of Range * Scope * Id * E > | ERecursiveFun' of Range * Scope * Id * E ref * TPrepass option > | ERecursiveForall' of Range * Scope * Id * E ref > | ERecursive of E ref // For global mutually recursive functions > | EPatternRef of E ref > | EJoinPoint of Range * E * TPrepass option * backend: (Range * string) > option * name: string option > | EJoinPoint' of Range * Scope * E * TPrepass option * backend: (Range * > string) option * name: string option > | EB of Range > | EV of Id > | ELit of Range * Literal > | EDefaultLit of Range * string * TPrepass > | ESymbol of Range * string > | EType of Range * TPrepass > | EApply of Range * E * E > | EArray of Range * E list * TPrepass > | ETypeApply of Range * E * TPrepass > | ERecBlock of Range * (Id * E) list * on_succ: E > | ERecordWith of Range * (Range * E) list * RecordWith list * RecordWithout > list > | EModule of Map<string, E> > | EOp of Range * Op * E list > | EPatternMiss of E > | ETypePatternMiss of TPrepass > | EAnnot of Range * E * TPrepass > | EIfThenElse of Range * E * E * E > | EIfThen of Range * E * E > | EPair of Range * E * E > | ESeq of Range * E * E > | EMutableSet of Range * E * (Range * E) list * E > | EReal of Range * E > | EExists of Range * TPrepass list * E > | EMacro of Range * Macro list * TPrepass > | EPrototypeApply of Range * prototype_id: GlobalId * TPrepass > | EPatternMemo of E > | ENominal of Range * E * TPrepass > // Regular pattern matching > | ELet of Range * Id * E * E > | EUnbox of Range * symbol: string * Id * body: E * on_succ: E * on_fail: E > | EExistsTest of Range * bind: Id * pat_type: Id [[]] * pat: Id * on_succ: E > * on_fail: E > | EPairTest of Range * bind: Id * pat1: Id * pat2: Id * on_succ: E * > on_fail: E > | ESymbolTest of Range * string * bind: Id * on_succ: E * on_fail: E > | ERecordTest of Range * PatRecordMemberPrepass list * bind: Id * on_succ: E > * on_fail: E > | EAnnotTest of Range * TPrepass * bind: Id * on_succ: E * on_fail: E > | EUnitTest of Range * bind: Id * on_succ: E * on_fail: E > | ENominalTest of Range * TPrepass * bind: Id * pat: Id * on_succ: E * > on_fail: E > | ELitTest of Range * Literal * bind: Id * on_succ: E * on_fail: E > | EDefaultLitTest of Range * string * TPrepass * bind: Id * on_succ: E * > on_fail: E > | ETypecase of Range * TPrepass * (TPrepass * E) list > and [[<ReferenceEquality>]] TPrepass = > | TForall' of Range * Scope * Id * TPrepass > | TForall of Range * Id * TPrepass > | TArrow' of Scope * Id * TPrepass > | TArrow of Id * TPrepass > | TExists > | TJoinPoint' of Range * Scope * TPrepass > | TJoinPoint of Range * TPrepass > | TPatternRef of TPrepass ref > | TB of Range > | TLit of Range * Literal > | TV of Id > | TPair of Range * TPrepass * TPrepass > | TFun of TPrepass * TPrepass * FunType > | TRecord of Range * Map<int * string,TPrepass> > | TModule of Map<string,TPrepass> > | TUnion of Range * (Map<int * string,TPrepass * TPrepass option> * > UnionLayout) > | TSymbol of Range * string > | TApply of Range * TPrepass * TPrepass > | TPrim of PrimitiveType > | TTerm of Range * E > | TMacro of Range * TypeMacro list > | TNominal of GlobalId > | TArray of TPrepass > | TLayout of TPrepass * Layout > | TMetaV of Id > | TTypecase of Range * TPrepass * (TPrepass * TPrepass) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Printable > > ── fsharp ────────────────────────────────────────────────────────────────────── > module Printable = > type PMacro = > | MText of string > | MTerm of PE > | MType of PT > | MLitType of PT > and PTypeMacro = > | TMText of string > | TMType of PT > | TMLitType of PT > and PRecordWith = > | RSymbol of string * PE > | RSymbolModify of string * PE > | RVar of PE * PE > | RVarModify of PE * PE > and PRecordWithout = > | WSymbol of string > | WVar of PE > and PPatRecordMember = > | Symbol of string * Id > | Var of PE * Id > and [[<ReferenceEquality>]] PE = > | EFun' of Scope * Id * PE * PT option > | EForall' of Scope * Id * PE > | ERecursiveFun' of Scope * Id * PE * PT option > | ERecursiveForall' of Scope * Id * PE > | ERecursive of PE > | EJoinPoint of PE * PT option * string option > | EJoinPoint' of Scope * PE * PT option * string option > | EArray of PE list * PT > | EFun of Id * PE * PT option > | EForall of Id * PE > | EB > | EV of Id > | ELit of Literal > | EDefaultLit of string * PT > | ESymbol of string > | EType of PT > | EApply of PE * PE > | ETypeApply of PE * PT > | ERecBlock of (Id * PE) list * on_succ: PE > | ERecordWith of PE list * PRecordWith list * PRecordWithout list > | EModule of Map<string, PE> > | EOp of Op * PE list > | EPatternMiss of PE > | ETypePatternMiss of PT > | EAnnot of PE * PT > | EIfThenElse of PE * PE * PE > | EIfThen of PE * PE > | EPair of PE * PE > | ESeq of PE * PE > | EHeapMutableSet of PE * PE list * PE > | EReal of PE > | EExists of PT list * PE > | EMacro of PMacro list * PT > | EPrototypeApply of prototype_id: GlobalId * PT > | EPatternMemo of PE > | ENominal of PE * PT > // Regular pattern matching > | ELet of Id * PE * PE > | EUnbox of Id * string * PE * PE * PE > | EExistsTest of bind: Id * pat_type: Id [[]] * pat: Id * on_succ: PE * > on_fail: PE > | EPairTest of bind: Id * pat1: Id * pat2: Id * on_succ: PE * on_fail: > PE > | ESymbolTest of string * bind: Id * on_succ: PE * on_fail: PE > | ERecordTest of PPatRecordMember list * bind: Id * on_succ: PE * > on_fail: PE > | EAnnotTest of PT * bind: Id * on_succ: PE * on_fail: PE > | EUnitTest of bind: Id * on_succ: PE * on_fail: PE > | ENominalTest of PT * bind: Id * pat: Id * on_succ: PE * on_fail: PE > | ELitTest of Literal * bind: Id * on_succ: PE * on_fail: PE > | EDefaultLitTest of string * PT * bind: Id * on_succ: PE * on_fail: PE > | ETypecase of PT * (PT * PE) list > | EOmmitedRecursive > and [[<ReferenceEquality>]] PT = > | TTypecase of PT * (PT * PT) list > | TForall' of Scope * Id * PT > | TForall of Id * PT > | TArrow' of Scope * Id * PT > | TArrow of Id * PT > | TExists > | TJoinPoint' of Scope * PT > | TJoinPoint of PT > | TB > | TLit of Literal > | TV of Id > | TMetaV of Id > | TPair of PT * PT > | TFun of PT * PT * FunType > | TFunPtr of PT * PT > | TRecord of Map<int * string,PT> > | TModule of Map<string,PT> > | TUnion of Map<int * string,PT> * UnionLayout > | TSymbol of string > | TApply of PT * PT > | TPrim of PrimitiveType > | TTerm of PE > | TMacro of PTypeMacro list > | TNominal of GlobalId > | TArray of PT > | TLayout of PT * Layout > > let eval x = > let recs = System.Collections.Generic.HashSet(HashIdentity.Reference) > let rec term = function > | E.ETypecase(r,a,b) -> ETypecase(ty a,b |> List.map (fun (a,b) -> > ty a, term b)) > | E.EPatternRef a -> term a.Value > | E.EFun'(_,a,b,c,d) -> EFun'(a,b,term c,Option.map ty d) > | E.EForall'(_,a,b,c) -> EForall'(a,b,term c) > | E.EArray(_,a,b) -> EArray(List.map term a,ty b) > | E.ERecursiveFun'(_,a,b,c,d) -> > let r = c.Value > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursiveFun'(a,b,r,Option.map ty d) > | E.ERecursiveForall'(_,a,b,c) -> > let r = c.Value > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursiveForall'(a,b,r) > | E.ERecursive a -> > let r = a.Value > if isNull (box r) then EOmmitedRecursive > else > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursive r > | E.EJoinPoint(_,a,b,d,_) -> EJoinPoint(term a,Option.map ty > b,Option.map snd d) > | E.EJoinPoint'(_,a,b,c,d,_) -> EJoinPoint'(a,term b,Option.map ty > c,Option.map snd d) > | E.EFun(_,a,b,c) -> EFun(a,term b,Option.map ty c) > | E.EForall(_,a,b) -> EForall(a,term b) > | E.EB _ -> EB > | E.EV i -> EV i > | E.ELit(_,a) -> ELit(a) > | E.EDefaultLit(_,a,b) -> EDefaultLit(a,ty b) > | E.ESymbol(_,a) -> ESymbol a > | E.EType(_,a) -> EType(ty a) > | E.EApply(_,a,b) -> EApply(term a,term b) > | E.ETypeApply(_,a,b) -> ETypeApply(term a,ty b) > | E.ERecBlock(_,a,b) -> ERecBlock(List.map (fun (a,b) -> a, term b) > a,term b) > | E.ERecordWith(_,a,b,c) -> > let a = a |> List.map (fun (_,a) -> term a) > let b = b |> List.map (function > | RecordWith.RSymbol((_,a),b) -> RSymbol(a,term b) > | RecordWith.RSymbolModify((_,a),b) -> RSymbolModify(a,term > b) > | RecordWith.RVar((_,a),b) -> RVar(term a,term b) > | RecordWith.RVarModify((_,a),b) -> RVarModify(term a,term > b) > ) > let c = c |> List.map (function > | RecordWithout.WSymbol(_,a) -> WSymbol a > | RecordWithout.WVar(_,a) -> WVar(term a) > ) > ERecordWith(a,b,c) > | E.EModule a -> EModule(Map.map (fun _ -> term) a) > | E.EOp(_,a,b) -> EOp(a,List.map term b) > | E.EPatternMiss a -> EPatternMiss(term a) > | E.ETypePatternMiss a -> ETypePatternMiss(ty a) > | E.EAnnot(_,a,b) -> EAnnot(term a,ty b) > | E.EIfThenElse(_,a,b,c) -> EIfThenElse(term a,term b,term c) > | E.EIfThen(_,a,b) -> EIfThen(term a,term b) > | E.EPair(_,a,b) -> EPair(term a,term b) > | E.ESeq(_,a,b) -> ESeq(term a,term b) > | E.EMutableSet(_,a,b,c) -> EHeapMutableSet(term a,List.map (snd >> > term) b,term c) > | E.EReal(_, a) -> EReal(term a) > | E.EExists(_, a, b) -> EExists(List.map ty a, term b) > | E.EMacro(_,a,b) -> > let a = a |> List.map (function > | Macro.MText a -> MText a > | Macro.MTerm a -> MTerm(term a) > | Macro.MType a -> MType(ty a) > | Macro.MLitType a -> MLitType(ty a) > ) > EMacro(a,ty b) > | E.EPrototypeApply(_,a,b) -> EPrototypeApply(a,ty b) > | E.EPatternMemo a -> EPatternMemo(term a) > | E.ENominal(_,a,b) -> ENominal(term a,ty b) > // Regular pattern matching > | E.ELet(_,a,b,c) -> ELet(a,term b,term c) > | E.EUnbox(_,q,a,b,c,d) -> EUnbox(a,q,term b,term c,term d) > | E.EExistsTest(_,a,l,q,d,e) -> EExistsTest(a,l,q,term d,term e) > | E.EPairTest(_,a,b,c,d,e) -> EPairTest(a,b,c,term d,term e) > | E.ESymbolTest(_,a,b,c,d) -> ESymbolTest(a,b,term c,term d) > | E.ERecordTest(_,a,b,c,d) -> > let a = a |> List.map (function > | PatRecordMemberPrepass.Symbol((_,a),b) -> Symbol(a,b) > | PatRecordMemberPrepass.Var((_,a),b) -> Var(term a,b) > ) > ERecordTest(a,b,term c,term d) > | E.EAnnotTest(_,a,b,c,d) -> EAnnotTest(ty a,b,term c,term d) > | E.EUnitTest(_,a,b,c) -> EUnitTest(a,term b,term c) > | E.ENominalTest(_,a,b,c,d,e) -> ENominalTest(ty a,b,c,term d,term > e) > | E.ELitTest(_,a,b,c,d) -> ELitTest(a,b,term c,term d) > | E.EDefaultLitTest(_,a,b,c,d,e) -> EDefaultLitTest(a,ty b,c,term > d,term e) > and ty = function > | TPrepass.TTypecase(_,a,b) -> TTypecase(ty a,List.map (fun (a,b) -> > ty a, ty b) b) > | TPrepass.TPatternRef a -> ty a.Value > | TPrepass.TForall'(_,a,b,c) -> TForall'(a,b,ty c) > | TPrepass.TForall(_,a,b) -> TForall(a,ty b) > | TPrepass.TArrow'(a,b,c) -> TArrow'(a,b,ty c) > | TPrepass.TArrow(a,b) -> TArrow(a,ty b) > | TPrepass.TExists -> TExists > | TPrepass.TJoinPoint'(_,a,b) -> TJoinPoint'(a,ty b) > | TPrepass.TJoinPoint(_,a) -> TJoinPoint(ty a) > | TPrepass.TB _ -> TB > | TPrepass.TLit(_,x) -> TLit x > | TPrepass.TV a -> TV a > | TPrepass.TMetaV a -> TMetaV a > | TPrepass.TPair(_,a,b) -> TPair(ty a,ty b) > | TPrepass.TFun(a,b,t) -> TFun(ty a,ty b,t) > | TPrepass.TRecord(_,a) -> TRecord(Map.map (fun _ -> ty) a) > | TPrepass.TModule a -> TModule(Map.map (fun _ -> ty) a) > | TPrepass.TUnion(_,(a,b)) -> TUnion(Map.map (fun _ x -> ty (fst x)) > a,b) > | TPrepass.TSymbol(_,a) -> TSymbol a > | TPrepass.TApply(_,a,b) -> TApply(ty a, ty b) > | TPrepass.TPrim a -> TPrim a > | TPrepass.TTerm(_,a) -> TTerm(term a) > | TPrepass.TMacro(_,a) -> > let a = a |> List.map (function > | TypeMacro.TMText a -> TMText a > | TypeMacro.TMType a -> TMType(ty a) > | TypeMacro.TMLitType a -> TMLitType(ty a) > ) > TMacro(a) > | TPrepass.TNominal a -> TNominal a > | TPrepass.TArray a -> TArray(ty a) > | TPrepass.TLayout(a,b) -> TLayout(ty a,b) > > match x with > | Choice1Of2(x,ret) -> ret (term x) > | Choice2Of2(x,ret) -> ret (ty x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassTopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassTopEnv = { > prototypes_next_tag : int > prototypes_instances : Map<GlobalId * GlobalId,E> > nominals_next_tag : int > nominals : Map<GlobalId,{|body : TPrepass; name : string|}> > term : Map<string,E> > ty : Map<string,TPrepass> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_emptyPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_emptyPrepass = { > prototypes_next_tag = 0 > prototypes_instances = Map.empty > nominals_next_tag = 0 > nominals = Map.empty > term = Map.empty > ty = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionPrepass small big = { > prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag > nominals = Map.foldBack Map.add small.nominals big.nominals > term = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | EModule x, Some (EModule x') -> Map.foldBack Map.add x x' |> > EModule > | _ -> v > s |> Map.add k v > ) small.term big.term > ty = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TModule x, Some (TModule x') -> Map.foldBack Map.add x x' |> > TModule > | _ -> v > s |> Map.add k v > ) small.ty big.ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_modulePrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_modulePrepass m (a : PrepassTopEnv) = > {a with > ty = Map.add m (TModule a.ty) Map.empty > term = Map.add m (EModule a.term) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PropagatedVarsEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PropagatedVarsEnv = {|vars : Set<int>; range : (int * int) option|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PropagatedVars > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PropagatedVars = {term : PropagatedVarsEnv; ty : PropagatedVarsEnv} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### propagate > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Attaches scopes to all the nodes. > let propagate x = > let dict = Dictionary(HashIdentity.Reference) > let (+*) a b = > match a,b with > | Some(min',max'), Some(min'',max'') -> Some(min min' min'', max max' > max'') > | Some(a,b), _ | _, Some(a,b) -> Some(a,b) > | None, None -> None > let (+) (a : PropagatedVars) (b : PropagatedVars) : PropagatedVars = { > term = {|vars = Set.union a.term.vars b.term.vars; range = a.term.range > +* b.term.range |} > ty = {|vars = Set.union a.ty.vars b.ty.vars; range = a.ty.range +* > b.ty.range |} > } > let (-*) a i = > if 0 <= i then > match a with > | Some(min',max') -> Some(min min' i, max max' i) > | None -> Some(i,i) > else a // Recursive vars are negative and get inlined so they should be > ignored when calculating the range of a scope. > let (-) (a : PropagatedVars) i = {a with term = {|vars = Set.remove i > a.term.vars; range = a.term.range -* i |} } > let (-.) (a : PropagatedVars) i = {a with ty = {|vars = Set.remove i > a.ty.vars; range = a.ty.range -* i |} } > let empty' term ty = let f x = {|vars = x; range=None|} in {term = f term; > ty = f ty} > let empty = empty' Set.empty Set.empty > let singleton_term i = empty' (Set.singleton i) Set.empty > let singleton_ty i = empty' Set.empty (Set.singleton i) > > let scope_dict = Dictionary<obj,_>(HashIdentity.Reference) > let scope x (v : PropagatedVars) = scope_dict.Add(x,v); empty' v.term.vars > v.ty.vars > let rec term x = > match x with > | EFun' _ | EForall' _ | ERecursiveFun' _ | ERecursiveForall' _ | > ERecursive _ | EJoinPoint' _ | EModule _ | ESymbol _ | ELit _ | EB _ -> empty > | EPatternRef a -> term a.Value > | EV i -> singleton_term i > | EPrototypeApply(_,_,a) | EType(_,a) | ETypePatternMiss a | > EDefaultLit(_,_,a) -> ty a > | ESeq(_,a,b) | EPair(_,a,b) | EIfThen(_,a,b) | EApply(_,a,b) -> term a > + term b > | EArray(_,a,b) -> List.fold (fun s x -> s + term x) (ty b) a > | ENominal(_,a,b) | EAnnot(_,a,b) | ETypeApply(_,a,b) -> term a + ty b > | EForall(_,i,a) -> scope x (term a -. i) > | EJoinPoint(_,a,t,_,_) -> scope x (match t with Some t -> term a + ty t > | None -> term a) > | EFun(_,i,a,t) -> scope x (match t with Some t -> term a - i + ty t | > None -> term a - i) > | ERecBlock(_,l,on_succ) -> > let s = List.fold (fun s (_,body) -> s + term body) (term on_succ) l > List.fold (fun s (id,_) -> s - id) s l > | ERecordWith(_,a,b,c) -> > let fold f a b = List.fold f b a > List.fold (fun s (_,a) -> s + term a) empty a > |> fold (fun s -> function > | RSymbolModify(_,a) | RSymbol(_,a) -> s + term a > | RVar((_,a),b) | RVarModify((_,a),b) -> s + term a + term b > ) b > |> fold (fun s -> function > | WSymbol _ -> s > | WVar(_,a) -> s + term a > ) c > | EOp(_,_,a) -> List.fold (fun s a -> s + term a) empty a > | EMutableSet(_,a,b,c) -> term a + List.fold (fun s (_,a) -> s + term a) > empty b + term c > | EIfThenElse(_,a,b,c) -> term a + term b + term c > | EExists(_,a,b) -> List.fold (fun s a -> s + ty a) (term b) a > | EPatternMiss a | EReal(_,a) -> term a > | EMacro(_,a,b) -> List.fold (fun s -> function MLitType x | MType x -> > s + ty x | MTerm x -> s + term x | MText _ -> s) (ty b) a > | EPatternMemo a -> memoize dict term a > // Regular pattern matching > | ELet(_,bind,body,on_succ) -> term on_succ - bind + term body > | EUnbox(_,_,bind,body,on_succ,on_fail) -> term on_succ - bind + term > body + term on_fail > | EExistsTest(_,bind,pat_type,pat,on_succ,on_fail) -> singleton_term > bind + (Array.fold (-.) (term on_succ) pat_type - pat) + term on_fail > | EPairTest(_,bind,pat1,pat2,on_succ,on_fail) -> singleton_term bind + > (term on_succ - pat1 - pat2) + term on_fail > | ESymbolTest(_,_,bind,on_succ,on_fail) > | EUnitTest(_,bind,on_succ,on_fail) > | ELitTest(_,_,bind,on_succ,on_fail) -> singleton_term bind + term > on_succ + term on_fail > | ERecordTest(_,a,bind,on_succ,on_fail) -> > let on_succ_and_injects = > let on_succ = List.fold (fun s (Symbol(_,a) | Var(_,a)) -> s - > a) (term on_succ) a > List.fold (fun s -> function Var((_,a),_) -> s + term a | Symbol > _ -> s) on_succ a // Though it is less efficient, I am using two passes here to > guard against future changes to pattern compilation breaking this part by > accident. > singleton_term bind + term on_fail + on_succ_and_injects > | EDefaultLitTest(_,_,t,bind,on_succ,on_fail) > | EAnnotTest(_,t,bind,on_succ,on_fail) -> singleton_term bind + ty t + > term on_succ + term on_fail > | ENominalTest(_,t,bind,pat,on_succ,on_fail) -> singleton_term bind + ty > t + (term on_succ - pat) + term on_fail > | ETypecase(_,a,b) -> > List.fold (fun s (a,b) -> > let a = ty a > let mutable b = term b > match a.ty.range with > | Some(a,a') -> for i=a to a' do b <- b -. i > | None -> () > s + a + b > ) (ty a) b > and ty = function > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TSymbol _ | TPrim _ > | TNominal _ | TLit _ | TB _ -> empty > | TTypecase(_,a,b) -> > List.fold (fun s (a,b) -> > let a = ty a > let mutable b = ty b > match a.ty.range with > | Some(a,a') -> for i=a to a' do b <- b -. i > | None -> () > s + a + b > ) (ty a) b > | TPatternRef a -> ty a.Value > | TV i -> singleton_ty i > | TMetaV i -> {empty with ty = {|empty.ty with range = Some(i,i)|} } > | TApply(_,a,b) | TPair(_,a,b) | TFun(a,b,_) -> ty a + ty b > | TUnion(_,(a,_)) -> a |> Map.fold (fun s k (a,b) -> s + ty a + > (Option.map ty b |> Option.defaultValue empty)) empty > | TRecord(_,a) -> Map.fold (fun s k v -> s + ty v) empty a > | TModule a -> Map.fold (fun s k v -> s + ty v) empty a > | TTerm(_,a) -> term a > | TMacro(_,a) -> a |> List.fold (fun s -> function TMText _ -> s | > TMLitType x | TMType x -> s + ty x) empty > | TForall(_,i,a) | TArrow(i,a) as x -> scope x (ty a -. i) > | TJoinPoint(_,a) as x -> scope x (ty a) > | TArray(a) | TLayout(a,_) -> ty a > > let _ = match x with Choice1Of2 x -> term x | Choice2Of2 x -> ty x > scope_dict > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResolveEnvValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResolveEnvValue = {|term : Set<Id>; ty : Set<Id> |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResolveEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResolveEnv = Map<int, ResolveEnvValue> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### resolve_recursive_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let resolve_recursive_free_vars env = > Map.fold (fun (env : ResolveEnv) k v -> > let has_visited = HashSet() > let rec f (s : ResolveEnvValue) k v = > if has_visited.Add(k) then > let s = Set.fold (fun s k -> if k < 0 then f s k env.[[k]] else > {|s with term = Set.add k s.term|}) s v.term > Set.fold (fun s k -> {|s with ty = Set.add k s.ty|}) s v.ty > else s > Map.add k (f {|term=Set.empty; ty=Set.empty|} k v) env > ) env env > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### resolve > > ── fsharp ────────────────────────────────────────────────────────────────────── > let resolve (scope : Dictionary<obj,PropagatedVars>) x = > let dict = Dictionary(HashIdentity.Reference) > let subst' (env : ResolveEnv) (x : PropagatedVars) : PropagatedVars = > let f (s : ResolveEnvValue) x = > if x < 0 then > match Map.tryFind x env with > | Some x -> {|term=Set.union s.term x.term; ty=Set.union s.ty > x.ty|} > | None -> {|s with term=Set.add x s.term|} > else {|s with term=Set.add x s.term|} > let fv = Set.fold f {|term=Set.empty; ty=Set.empty|} x.term.vars > {term = {|x.term with vars = fv.term|}; ty = {|x.ty with vars = > Set.union fv.ty x.ty.vars|} } > let subst env (x : obj) = match scope.TryGetValue(x) with true, v -> > scope.[[x]] <- subst' env v | _ -> () > let rec term (env : ResolveEnv) x = > let f = term env > match x with > | EForall' _ | EFun' _ | ERecursiveForall' _ | ERecursiveFun' _ | > ERecursive _ | EJoinPoint' _ | EModule _ | EV _ | ESymbol _ | ELit _ | EB _ -> > () > | EPatternRef a -> f a.Value > | EDefaultLit(_,_,a) | EPrototypeApply(_,_,a) | EType(_,a) | > ETypePatternMiss a -> ty env a > | EJoinPoint(_,a,b,_,_) | EFun(_,_,a,b) -> subst env x; f a; Option.iter > (ty env) b > | EForall(_,_,a) -> subst env x; f a > | ERecBlock(r,a,b) -> > // Goes over all the functions in a recursive block, resolving them. > // The reason why this is sound is because the outer blocks are > progressively resolved as they go in. > let env = > let l = > List.fold (fun s (id,body) -> > let x = subst' env scope.[[body]] > Map.add id {|term=x.term.vars; ty=x.ty.vars|} s > ) Map.empty a > |> resolve_recursive_free_vars > Map.foldBack Map.add l env > a |> List.iter (fun (id,body) -> > scope.[[body]] <- > let x = env.[[id]] > let v = scope.[[body]] > {term = {|v.term with vars = x.term |}; ty = {|v.ty with > vars=x.ty|} } > term env body > ) > term env b > | ERecordWith(_,a,b,c) -> > List.iter (snd >> f) a > b |> List.iter (function > | RSymbolModify(_,a) | RSymbol(_,a) -> f a > | RVarModify((_,a),b) | RVar((_,a),b) -> f a; f b) > c |> List.iter (function > | WSymbol _ -> () > | WVar(_,a) -> f a) > | ENominal(_,a,b) | ETypeApply(_,a,b) | EAnnot(_,a,b) -> f a; ty env b > | EOp(_,_,a) -> List.iter f a > | EExists(_,a,b) -> List.iter (ty env) a; f b > | EPatternMiss a | EReal(_,a) -> f a > | EArray(_,a,b) -> List.iter f a; ty env b > | EExistsTest(_,_,_,_,a,b) > | EUnitTest(_,_,a,b) | ESymbolTest(_,_,_,a,b) | EPairTest(_,_,_,_,a,b) | > ELitTest(_,_,_,a,b) > | ELet(_,_,a,b) | EIfThen(_,a,b) | EPair(_,a,b) | ESeq(_,a,b) | > EApply(_,a,b) -> f a; f b > | EMutableSet(_,a,b,c) -> f a; List.iter (snd >> f) b; f c > | EUnbox(_,_,_,a,b,c) | EIfThenElse(_,a,b,c) -> f a; f b; f c > | EMacro(_,a,b) -> > a |> List.iter (function MLitType a | MType a -> ty env a | MTerm a > -> f a | MText _ -> ()) > ty env b > | EPatternMemo a -> memoize dict f a > | ERecordTest(_,l,_,a,b) -> > l |> List.iter (function Symbol _ -> () | Var((_,a),_) -> f a) > f a; f b > | EDefaultLitTest(_,_,t,_,a,b) | ENominalTest(_,t,_,_,a,b) | > EAnnotTest(_,t,_,a,b) -> ty env t; f a; f b > | ETypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; > term env b) > > and ty (env : ResolveEnv) x = > let f = ty env > match x with > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal _ | TPrim > _ | TSymbol _ | TV _ | TMetaV _ | TLit _ | TB _ -> () > | TTypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; > ty env b) > | TPatternRef a -> f a.Value > | TForall(_,_,a) > | TArrow(_,a) -> subst env x; f a > | TApply(_,a,b) | TFun(a,b,_) | TPair(_,a,b) -> f a; f b > | TUnion(_,(a,_)) -> a |> Map.iter (fun _ (a,b) -> f a; Option.iter f b) > | TRecord(_,a) -> Map.iter (fun _ -> f) a > | TModule a -> Map.iter (fun _ -> f) a > | TTerm(_,a) -> term env a > | TMacro(_,a) -> a |> List.iter (function TMText _ -> () | TMLitType a | > TMType a -> f a) > | TJoinPoint(_,a) | TLayout(a,_) | TArray(a) -> f a > > match x with > | Choice1Of2 x -> term Map.empty x > | Choice2Of2 x -> ty Map.empty x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerSubEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerSubEnv = {|var : Map<int,int>; adj : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerEnv = {term : LowerSubEnv; ty : LowerSubEnv } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerEnvRec > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerEnvRec = Map<int,LowerEnv -> E> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lower > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lower (scope : Dictionary<obj,PropagatedVars>) x = > let dict = Dictionary(HashIdentity.Reference) > let scope (env : LowerEnv) x = > let v = scope.[[x]] > let fv v env = v |> Set.toArray |> Array.map (fun i -> Map.find i env) > let sz = function Some(min',max') -> max' - min' + 1 | None -> 0 > let scope : Scope = { > term = {|free_vars = fv v.term.vars env.term.var; stack_size = sz > v.term.range|} > ty = {|free_vars = fv v.ty.vars env.ty.var; stack_size = sz > v.ty.range|} > } > > let vars v = Set.fold (fun (s,i) x -> Map.add x i s,i+1) (Map.empty, 0) > v |> fst > let adj len = function Some(min',_) -> len - min' | None -> 0 > let env : LowerEnv = { > term = {|var = vars v.term.vars; adj = adj > scope.term.free_vars.Length v.term.range|} > ty = {|var = vars v.ty.vars; adj = adj scope.ty.free_vars.Length > v.ty.range|} > } > > scope, env > > let adj_term (env : LowerEnv) i = > let i' = i + env.term.adj > i', {env with term = {|env.term with var = Map.add i i' env.term.var|}} > let adj_ty (env : LowerEnv) i = > let i' = i + env.ty.adj > i', {env with ty = {|env.ty with var = Map.add i i' env.ty.var|}} > > let rec term (env_rec : LowerEnvRec) (env : LowerEnv) x = > let f = term env_rec env > let g = ty env_rec > match x with > | EForall' _ | EJoinPoint' _ | EFun' _ | ERecursiveForall' _ | > ERecursiveFun' _ | ERecursive _ | EModule _ | ESymbol _ | ELit _ | EB _ -> x > | EPatternRef a -> f a.Value > | EFun(r,pat,body,t) -> > let scope, env = scope env x > let pat, env = adj_term env pat > assert (scope.term.free_vars.Length = pat) > EFun'(r,scope,pat,term env_rec env body,Option.map (g env) t) > | EForall(r,pat,body) -> > let scope, env = scope env x > let pat, env = adj_ty env pat > assert (scope.ty.free_vars.Length = pat) > EForall'(r,scope,pat,term env_rec env body) > | EJoinPoint(r,body,t,q,name) -> > let scope, env = scope env x > EJoinPoint'(r,scope,term env_rec env body,Option.map (g env) > t,q,name) > | EV i when 0 <= i -> EV env.term.var.[[i]] > | EV i -> env_rec.[[i]] env > | EDefaultLit(r,a,b) -> EDefaultLit(r,a,g env b) > | EType(r,a) -> EType(r,g env a) > | ETypePatternMiss a -> ETypePatternMiss(g env a) > | EApply(r,a,b) -> EApply(r,f a,f b) > | ETypeApply(r,a,b) -> ETypeApply(r,f a,g env b) > | ENominal(r,a,b) -> ENominal(r,f a,g env b) > | ERecBlock(r,a,b) -> > let l,env_rec = > List.mapFold (fun (env_rec : LowerEnvRec) (i,body) -> > let re = ref Unchecked.defaultof<_> > let eval env_rec = > let _,env = scope env body > re.Value <- > match body with > | EFun(_,i,body,_) -> > let _,env = adj_term env i > term env_rec env body > | EForall(_,i,body) -> > let _,env = adj_ty env i > term env_rec env body > | _ -> failwith "Compiler error: Expected a fun or a > forall." > let body env = > let scope,env = scope env body > match body with > | EFun(r,i,_,d) -> > let i,_ = adj_term env i > ERecursiveFun'(r,scope,i,re,d) > | EForall(r,i,_) -> > let i,_ = adj_ty env i > ERecursiveForall'(r,scope,i,re) > | _ -> failwith "Compiler error: Expected a fun or a > forall." > eval,Map.add i body env_rec > ) env_rec a > List.iter (fun eval -> eval env_rec) l > term env_rec env b > | ERecordWith(r,a,b,c) -> > let a = List.map (fun (r,a) -> r, f a) a > let b = b |> List.map (function > | RSymbol(a,b) -> RSymbol(a,f b) > | RSymbolModify(a,b) -> RSymbolModify(a,f b) > | RVar((r,a),b) -> RVar((r,f a),f b) > | RVarModify((r,a),b) -> RVarModify((r,f a),f b) > ) > let c = c |> List.map (function > | WSymbol _ as x -> x > | WVar(r,a) -> WVar(r,f a) > ) > ERecordWith(r,a,b,c) > | EOp(r,a,b) -> EOp(r,a,List.map f b) > | EAnnot(r,a,b) -> EAnnot(r,f a,g env b) > | EIfThenElse(r,a,b,c) -> EIfThenElse(r,f a,f b,f c) > | EIfThen(r,a,b) -> EIfThen(r,f a,f b) > | EArray(r,a,b) -> EArray(r,List.map f a, g env b) > | EPair(r,a,b) -> EPair(r,f a,f b) > | ESeq(r,a,b) -> ESeq(r,f a,f b) > | EMutableSet(r,a,b,c) -> EMutableSet(r,f a,List.map (fun (a,b) -> a, f > b) b,f c) > | EPatternMiss a -> EPatternMiss(f a) > | EReal(r,a) -> EReal(r,f a) > | EExists(r,a,b) -> EExists(r,List.map (g env) a,f b) > | EMacro(r,a,b) -> > let a = a |> List.map (function > | MText _ as x -> x > | MLitType a -> MLitType(g env a) > | MType a -> MType(g env a) > | MTerm a -> MTerm(f a) > ) > EMacro(r,a,g env b) > | EPrototypeApply(r,a,b) -> EPrototypeApply(r,a,g env b) > | EPatternMemo x -> memoize dict f x > // Regular pattern matching > | ELet(r,pat,body,on_succ) -> > let body = term env_rec env body > let pat,env = adj_term env pat > let on_succ = term env_rec env on_succ > ELet(r,pat,body,on_succ) > | EUnbox(r,q,pat,body,on_succ,on_fail) -> > let body = term env_rec env body > let on_fail = term env_rec env on_fail > let pat,env = adj_term env pat > let on_succ = term env_rec env on_succ > EUnbox(r,q,pat,body,on_succ,on_fail) > | EPairTest(r,i,pat1,pat2,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat1,env = adj_term env pat1 > let pat2,env = adj_term env pat2 > let on_succ = term env_rec env on_succ > EPairTest(r,i,pat1,pat2,on_succ,on_fail) > | EExistsTest(r,i,pat_type,pat,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat,env = adj_term env pat > let pat_type,env = Array.mapFold adj_ty env pat_type > let on_succ = term env_rec env on_succ > EExistsTest(r,i,pat_type,pat,on_succ,on_fail) > | ESymbolTest(r,a,i,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let on_succ = term env_rec env on_succ > ESymbolTest(r,a,i,on_succ,on_fail) > | ERecordTest(r,a,i,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let b = env.term.var.[[i]] > let a, env = > List.mapFold (fun env x -> > match x with > | Symbol(a,b) -> let b,env = adj_term env b in Symbol(a,b), > env > | Var((r,a),b) -> let b,env = adj_term env b in Var((r,f > a),b), env > ) env a > ERecordTest(r,a,b,term env_rec env on_succ,on_fail) > | EAnnotTest(r,a,i,on_succ,on_fail) -> EAnnotTest(r,g env > a,env.term.var.[[i]],f on_succ,f on_fail) > | ELitTest(r,a,i,on_succ,on_fail) -> ELitTest(r,a,env.term.var.[[i]],f > on_succ,f on_fail) > | EUnitTest(r,i,on_succ,on_fail) -> EUnitTest(r,env.term.var.[[i]],f > on_succ,f on_fail) > | ENominalTest(r,a,i,pat,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat, env = adj_term env pat > let on_succ = term env_rec env on_succ > ENominalTest(r,g env a,i,pat,on_succ,on_fail) > | EDefaultLitTest(r,a,b,i,on_succ,on_fail) -> EDefaultLitTest(r,a,g env > b,env.term.var.[[i]],f on_succ,f on_fail) > | ETypecase(r,a,b) -> > let b = b |> List.map (fun (a,b) -> > let metavars = Dictionary() > let mutable env_case = env > let a = > ty' (memoize metavars (fun i -> > let i, env = adj_ty env_case i > env_case <- env > TMetaV i > )) env_rec env_case a > a, term env_rec env_case b > ) > ETypecase(r,g env a,b) > and ty env_rec env x = ty' (fun _ -> failwith "Compiler error: TMetaV should > not appear here.") env_rec env x > and ty' case_tmetav env_rec env x = > let f = ty' case_tmetav env_rec env > match x with > | TMetaV i -> case_tmetav i > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal _ | TPrim > _ | TSymbol _ | TLit _ | TB _ as x -> x > | TTypecase(r,a,b) -> > let b = b |> List.map (fun (a,b) -> > let metavars = Dictionary() > let mutable env_case = env > let a = > ty' (memoize metavars (fun i -> > let i, env = adj_ty env_case i > env_case <- env > TMetaV i > )) env_rec env_case a > a, ty env_rec env_case b > ) > TTypecase(r,ty env_rec env a,b) > | TPatternRef a -> f a.Value > | TJoinPoint(r,a) as x -> > let scope, env = scope env x > TJoinPoint'(r,scope,ty env_rec env a) > | TForall(r,a,b) as x -> > let scope, env = scope env x > let a, env = adj_ty env a > TForall'(r,scope,a,ty env_rec env b) > | TArrow(a,b) as x -> > let scope, env = scope env x > let a, env = adj_ty env a > TArrow'(scope,a,ty env_rec env b) > | TV i -> TV(env.ty.var.[[i]]) > | TPair(r,a,b) -> TPair(r,f a,f b) > | TFun(a,b,t) -> TFun(f a,f b,t) > | TRecord(r,a) -> TRecord(r,Map.map (fun _ -> f) a) > | TModule a -> TModule(Map.map (fun _ -> f) a) > | TUnion(r,(a,b)) -> TUnion(r,(Map.map (fun _ (a,b) -> f a, Option.map f > b) a,b)) > | TApply(r,a,b) -> TApply(r,f a,f b) > | TTerm(r,a) -> TTerm(r,term env_rec env a) > | TMacro(r,a) -> > let a = a |> List.map (function > | TMText _ as x -> x > | TMType a -> TMType(f a) > | TMLitType a -> TMLitType(f a) > ) > TMacro(r,a) > | TArray(a) -> TArray(f a) > | TLayout(a,b) -> TLayout(f a,b) > let env : LowerEnv = { > term = {|var = Map.empty; adj = 0|} > ty = {|var = Map.empty; adj = 0|} > } > match x with > | Choice1Of2(x,ret) -> ret (term Map.empty env x) > | Choice2Of2(x,ret) -> ret (ty Map.empty env x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env___ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env___ = { > term : {| env : Map<string,E>; i : Id; i_rec : Id |} > ty : {| env : Map<string,TPrepass>; i : Id |} > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalPrepassEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalPrepassEnv = Env___ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term (e : PartEvalPrepassEnv) k v = let term = e.term in {e with term = > {|term with i = term.i+1; env = Map.add k v term.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_rec > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_rec (e : PartEvalPrepassEnv) k v = let term = e.term in {e with > term = {|term with i_rec = term.i_rec-1; env = Map.add k v term.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty (e : PartEvalPrepassEnv) k v = let ty = e.ty in {e with ty = {|ty > with i = ty.i+1; env = Map.add k v ty.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_wildcard > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_wildcard (e : PartEvalPrepassEnv) = let ty = e.ty in {e with ty = {|ty > with i = ty.i+1|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_var (e : PartEvalPrepassEnv) k = e.term.i, add_term e k (EV > e.term.i) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fresh_term_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fresh_term_var (e : PartEvalPrepassEnv) = e.term.i, (let term = e.term in {e > with term = {|term with i = term.i+1|} }) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fresh_ty_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fresh_ty_var (e : PartEvalPrepassEnv) = e.ty.i, (let ty = e.ty in {e with ty > = {|ty with i = ty.i+1|} }) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_rec_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_rec_var (e : PartEvalPrepassEnv) k = e.term.i_rec, add_term_rec e k > (EV e.term.i_rec) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty_var (e : PartEvalPrepassEnv) k = e.ty.i, add_ty e k (TV e.ty.i) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty_wildcard > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty_wildcard (e : PartEvalPrepassEnv) = e.ty.i, add_wildcard e > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_term (x : E) = > let scope = propagate (Choice1Of2 x) > resolve scope (Choice1Of2 x) > lower scope (Choice1Of2(x,id)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_ty (x : TPrepass) = > let scope = propagate (Choice2Of2 x) > resolve scope (Choice2Of2 x) > lower scope (Choice2Of2(x,id)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openPrepass (top_env : PrepassTopEnv) env a l = > let a,b = > match top_env.term.[[snd a]], top_env.ty.[[snd a]] with > | EModule a, TModule b -> > List.fold (fun (a,b) (_,x) -> > match Map.find x a, Map.find x b with > | EModule a, TModule b -> a,b > | _ -> failwith "Compiler error: Module open's symbol index > should have been validated." > ) (a,b) l > | _ -> failwith "Compiler error: Module open should have been > validated." > { > term = {|env.term with env = Map.foldBack Map.add a env.term.env|} > ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|} > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepassPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepassPrepass package_id module_id path (top_env : PrepassTopEnv) = > let p r = {path=path; range=r} > let at_tag i = { package_id = package_id; module_id = module_id; tag = i } > let v_term (env : PartEvalPrepassEnv) x = Map.tryFind x env.term.env |> > Option.defaultWith (fun () -> top_env.term.[[x]]) > let v_ty (env : PartEvalPrepassEnv) x = Map.tryFind x env.ty.env |> > Option.defaultWith (fun () -> top_env.ty.[[x]]) > > // The functions in this block are basically renaming string id to int ids, > in addition to pattern compilation. > let rec compile_pattern (id : Id) (env : PartEvalPrepassEnv) (clauses : > (Pattern * RawExpr) list) = > let mutable term_var_count = env.term.i > let mutable ty_var_count = env.ty.i > let patvar () = let x = term_var_count in term_var_count <- > term_var_count+1; x > let ty_patvar () = let x = ty_var_count in ty_var_count <- > ty_var_count+1; x > let loop (pat, on_succ) on_fail = > let mutable dict = Map.empty > let mutable dict_type = Map.empty > let pat_refs_term = ResizeArray() > //let pat_ref_term x = let re = ref Unchecked.defaultof<_> in > pat_refs_term.Add(x,dict,re); EPatternRef re > let pat_ref_term' x k = > let re = ref Unchecked.defaultof<_> > let r = k (EPatternRef re) > pat_refs_term.Add(x,(dict,dict_type),re) > r > let pat_refs_ty = ResizeArray() > let pat_ref_ty x = let re = ref Unchecked.defaultof<_> in > pat_refs_ty.Add(x,(dict,dict_type),re); TPatternRef re > let rec cp id pat on_succ on_fail = > let v x = > match Map.tryFind x dict with > | Some x -> x > | None -> let v = patvar() in dict <- Map.add x v dict; v > let tv x = > match Map.tryFind x dict_type with > | Some x -> x > | None -> let v = ty_patvar() in dict_type <- Map.add x v > dict_type; v > let step pat on_succ = > match pat with > | PatVar(_,x) -> v x, on_succ > | _ -> let id = patvar() in id, cp id pat on_succ on_fail > match pat with > | PatDefaultValue _ -> failwith "Compiler error: The default > value should be filled." > | PatE _ -> on_succ > | PatB r -> EUnitTest(p r,id,on_succ,on_fail) > | PatVar(r,a) -> ELet(p r,v a,EV id,on_succ) > | PatAnnot(r,a,b) -> EAnnotTest(p r,pat_ref_ty b,id,cp id a > on_succ on_fail,on_fail) > | PatPair(r,a,b) -> > // Evaling the b then a causes the call args to be rotated > in join points during peval. > // This is not a problem, but it might be surprising if you > aren't aware why that is happening. > // Swapping the next two statements would fix it for pairs. > let b,on_succ = step b on_succ > let a,on_succ = step a on_succ > EPairTest(p r,id,a,b,on_succ,on_fail) > | PatExists(r,l,b) -> > let pat_type = List.map (snd >> tv) l |> List.toArray > let pat,on_succ = step b on_succ > EExistsTest(p r,id,pat_type,pat,on_succ,on_fail) > | PatArray(r,a) -> > let r = p r > let ar_ids,on_succ = List.mapFoldBack step a on_succ > let a_length = List.length a > let on_succ,_ = > List.foldBack (fun id' (on_succ,i) -> > ELet(r,id',EOp(r,ArrayIndex,[[EV id; ELit(r,LitInt32 > i)]]),on_succ), i-1 > ) ar_ids (on_succ, a_length - 1) > let id_length = EOp(r,ArrayLength,[[EType(r,TPrim UInt64T); > EV id]]) > let pat_length = ELit(r,LitUInt64(uint64 a_length)) > > EIfThenElse(r,EOp(r,EQ,[[id_length;pat_length]]),on_succ,on_fail) > | PatSymbol(r,a) -> ESymbolTest(p r,a,id,on_succ,on_fail) > | PatRecordMembers(r,items) -> > let inject_vars = Dictionary(HashIdentity.Reference) > List.iter (function > | PatRecordMembersSymbol _ -> () > | PatRecordMembersInjectVar((_,var),_) -> > match dict.TryGetValue(var) with > | true, x -> inject_vars.[[var]] <- EV x > | _ -> inject_vars.[[var]] <- v_term env var > ) items > let binds, on_succ = > List.mapFoldBack (fun item on_succ -> > match item with > | PatRecordMembersSymbol((r,keyword),name) -> let > arg, on_succ = step name on_succ in Symbol((p r,keyword),arg), on_succ > | PatRecordMembersInjectVar((r,var),name) -> let > arg, on_succ = step name on_succ in Var((p r,inject_vars.[[var]]),arg), on_succ > ) items on_succ > ERecordTest(p r,binds,id,on_succ,on_fail) > | PatOr(r,a,b) -> let on_succ = EPatternMemo on_succ in cp id a > on_succ (cp id b on_succ on_fail) > | PatAnd(r,a,b) -> let on_fail = EPatternMemo on_fail in cp id a > (cp id b on_succ on_fail) on_fail > | PatValue(r,x) -> ELitTest(p r,x,id,on_succ,on_fail) > | PatWhen(r,p',e) -> pat_ref_term' e (fun e -> cp id p' > (EIfThenElse(p r, e, on_succ, on_fail)) on_fail) > | PatNominal(r,(_,a),l,b) -> > let id', on_succ = step b on_succ > let a = List.fold (fun s (r',x) -> TApply(p (r +. > r'),s,TSymbol(p r',x))) (v_ty env a) l > ENominalTest(p r,a,id,id',on_succ,on_fail) > | PatFilledDefaultValue(r,a,b) -> EDefaultLitTest(p > r,a,pat_ref_ty b,id,on_succ,on_fail) > | PatDyn(r,a) -> let id' = patvar() in ELet(p r,id',EOp(p > r,Dyn,[[EV id]]),cp id' a on_succ on_fail) > | PatUnbox(r,q,a) -> let id' = patvar() in EUnbox(p r,q,id',EV > id,cp id' a on_succ on_fail,on_fail) > (pat_refs_term, pat_refs_ty), pat_ref_term' on_succ (fun on_succ -> > cp id pat on_succ (EPatternMemo on_fail)) > > let l, e = List.mapFoldBack loop clauses (EPatternMiss(EV id)) > l |> List.iter (fun (terms,tys) -> // The reason I am not evaling it in > place is because of the var count which is mutable. I need to deal with the > patterns first before replacing the strings in the body. > let env (dict,dict_type) = > {env with > term = {|env.term with i=term_var_count; env=dict |> > Map.fold (fun s k v -> Map.add k (EV v) s) env.term.env|} > ty = {|env.ty with i=ty_var_count; env=dict_type |> Map.fold > (fun s k v -> Map.add k (TV v) s) env.ty.env|} > } > terms |> Seq.iter (fun (a,dict,b) -> b.Value <- term (env dict) a) > tys |> Seq.iter (fun (a,dict,b) -> b.Value <- ty (env dict) a) > ) > e > and pattern_match (env : PartEvalPrepassEnv) r body clauses = > match clauses with > | [[PatVar(_,x), on_succ]] -> > let id,env = add_term_var env x > ELet(r,id,body,term env on_succ) > | _ -> > let id,env = fresh_term_var env > ELet(r,id,body,compile_pattern id env clauses) > and pattern_function env r clauses annot = > match clauses with > | [[PatVar(_,x), on_succ]] -> > let id,env = add_term_var env x > EFun(r,id,term env on_succ,annot) > | _ -> > let id,env = fresh_term_var env > EFun(r,id,compile_pattern id env clauses,annot) > and ty env x = ty' (fun _ -> failwith "Compiler error: RawTMetaVar should > not appear here.") env x > and ty' case_metavar (env : PartEvalPrepassEnv) x = > let f = ty' case_metavar env > match x with > | RawTMetaVar(_,name) -> case_metavar (Some name) > | RawTWildcard _ -> case_metavar None > | RawTForall(r,a,b) -> > let id, env = add_ty_var env (typevar_name a) > TForall(p r,id,ty' case_metavar env b) > | RawTB r -> TB (p r) > | RawTLit (r, x) -> TLit(p r,x) > | RawTVar(r,a) -> v_ty env a > | RawTPair(r,a,b) -> TPair(p r,f a,f b) > | RawTFun(r,a,b,t) -> TFun(f a,f b,t) > | RawTExists(r,l,b) -> TExists > | RawTRecord(r,l) -> TRecord(p r,Map.map (fun _ -> f) l) > | RawTUnion(r,a,b,this) -> > let rec subst_vars_with_metavars vars a = > let f = subst_vars_with_metavars vars > match a with > | RawTTypecase _ | RawTUnion _ -> failwith "Compiler error: Not > expecting typecase or union here." > | RawTVar(r,n) -> if List.contains n vars then RawTMetaVar(r,n) > else a > | RawTPrim _ | RawTFilledNominal _ | RawTTerm _ | RawTSymbol _ | > RawTLit _ | RawTMetaVar _ | RawTB _ | RawTWildcard _ -> a > | RawTPair(r,a,b) -> RawTPair(r,f a,f b) > | RawTFun(r,a,b,c) -> RawTFun(r,f a,f b,c) > | RawTArray(r,a) -> RawTArray(r,f a) > | RawTRecord(r,a) -> RawTRecord(r,Map.map (fun _ -> f) a) > | RawTApply(r,a,b) -> RawTApply(r,f a,f b) > | RawTForall(r,a,b) -> RawTForall(r,a,subst_vars_with_metavars > (List.removeAt (List.findIndex ((=) (typevar_name a)) vars) vars) b) > | RawTExists(r,a,b) -> > let f vars a = List.removeAt (List.findIndex ((=) > (typevar_name a)) vars) vars > RawTExists(r,a,subst_vars_with_metavars (List.fold f vars a) > b) > | RawTMacro(r,a) -> > let f = function (RawMacroText _ | RawMacroTerm _ | > RawMacroTypeLit _) as a -> a | RawMacroType(r,a) -> RawMacroType(r,f a) > RawTMacro(r, List.map f a) > | RawTLayout(r,a,b) -> RawTLayout(r,f a,b) > > let make_typecase x = > let rec loop vars x = > match x with > | RawTForall(_,a,b) -> loop (typevar_name a :: vars) b > | RawTFun(r,a,b,_) -> > RawTTypecase(r,this,[[subst_vars_with_metavars vars b,a]]) > | b -> let r = range_of_texpr b in > RawTTypecase(r,this,[[subst_vars_with_metavars vars b,RawTB r]]) > loop [[]] x |> f > TUnion(p r,(Map.map (fun _ (is_gadt,x) -> f x, if is_gadt then Some > (make_typecase x) else None) a,b)) > | RawTTypecase(r,a,b) -> > let b = b |> List.map (fun (t,e) -> > let metavars = Dictionary() > let mutable env_case = env > let t = > let f (id,env) = env_case <- env; TMetaV id > ty' (function > | None -> add_ty_wildcard env_case |> f > | Some name -> memoize metavars (add_ty_var env_case >> > f) name > ) env t > t, ty env_case e > ) > TTypecase(p r,ty env a,b) > | RawTSymbol(r,a) -> TSymbol(p r,a) > | RawTApply(r,a,b) -> > match f a, f b with > | TRecord(_,a') & a, TSymbol(_,b') & b -> > > match a' |> Map.tryPick (fun (_, k) v -> if k = b' then Some v > else None) with > | Some x -> x > | None -> TApply(p r,a,b) // TODO: Will be an error during > partial evaluation time. Could be substituted for an exception here, but I do > not want to have errors during the prepass. > | a,b -> TApply(p r,a,b) > | RawTPrim(r,a) -> TPrim(a) > | RawTTerm(r,a) -> TTerm(p r,term env a) > | RawTMacro(r,l) -> > let f = function > | RawMacroText(r,a) -> TMText a > | RawMacroType(r,a) -> TMType(f a) > | RawMacroTypeLit(r,a) -> TMLitType(f a) > | RawMacroTerm _ -> failwith "Compiler error: Term vars should > not appear on the type level." > TMacro(p r,List.map f l) > | RawTArray(r,a) -> TArray(f a) > | RawTFilledNominal(r,a) -> TNominal a > | RawTLayout(r,a,b) -> TLayout(f a,b) > and term env x = > let f = term env > match x with > | RawDefaultLit(r,a) -> failwith "Compiler error: Default values should > have been annotated in `fill` by prepass time." > | RawAnnot(_,RawDefaultLit(r,a),b) -> EDefaultLit(p r,a,ty env b) > | RawAnnot(_,RawLit(r,a),b) -> EDefaultLit(p r,a.LitToString(),ty env b) > | RawB r -> EB(p r) > | RawV(r,a,_) -> v_term env a > | RawLit(r,a) -> ELit(p r,a) > | RawSymbol(r,a) -> ESymbol(p r,a) > | RawType(r,a) -> EType(p r,ty env a) > | RawMatch(r,a,b) -> pattern_match env (p r) (f a) b > | RawFun(r,a) -> pattern_function env (p r) a None > | RawAnnot(_,RawFun(r,a),t) -> pattern_function env (p r) a (Some (ty > env t)) > | RawArray(r,a) -> failwith "Compiler error: The array should have been > annotated in `fill` by prepass time." > | RawAnnot(_,RawArray(r,a),b) -> EArray(p r,List.map f a,ty env b) > | RawTypecase(r,a,b) -> > let b = b |> List.map (fun (t,e) -> > let metavars = Dictionary() > let mutable env_case = env > let t = > let f (id,env) = env_case <- env; TMetaV id > ty' (function > | None -> add_ty_wildcard env_case |> f > | Some name -> memoize metavars (add_ty_var env_case >> > f) name > ) env t > t, term env_case e > ) > ETypecase(p r,ty env a,b) > | RawFilledForall(r,name,b) > | RawForall(r,((_,(name,_)),_),b) -> > let id, env = add_ty_var env name > EForall(p r,id,term env b) > | RawRecBlock(r,l,on_succ) -> > let l,env = List.mapFold (fun env ((r,name),body) -> let id,env = > add_term_rec_var env name in (id,body), env) env l > ERecBlock(p r,List.map (fun (id,body) -> id, term env body) l,term > env on_succ) > | RawRecordWith(r,a,b,c) -> > let a = List.map (fun a -> p (range_of_expr a), f a) a > let b = b |> List.map (function > | RawRecordWithSymbol((r,a),b) -> RSymbol((p r,a),f b) > | RawRecordWithSymbolModify((r,a),b) -> RSymbolModify((p r,a),f > b) > | RawRecordWithInjectVar((r,a),b) -> RVar((p r,v_term env a),f > b) > | RawRecordWithInjectVarModify((r,a),b) -> RVarModify((p > r,v_term env a),f b)) > let c = c |> List.map (function > | RawRecordWithoutSymbol(r,a) -> WSymbol(p r,a) > | RawRecordWithoutInjectVar(r,a) -> WVar(p r,v_term env a)) > ERecordWith(p r,a,b,c) > | RawOp(r,a,b) -> EOp(p r,a,List.map f b) > | RawJoinPoint(r,q,a,name) -> EJoinPoint(p r,f a,None,Option.map (fun > (r',w) -> p r',w) q,name) > | RawAnnot(_,RawJoinPoint(r,q,a,name),b) -> EJoinPoint(p r,f a,Some (ty > env b),Option.map (fun (r',w) -> p r',w) q,name) > | RawOpen (_,a,l,on_succ) -> term (module_openPrepass top_env env a l) > on_succ > | RawApply(r,a,b) -> > let rec loop = function > | EModule a' & a, EPair(_,ESymbol(_, b'),b'') & b -> > match Map.tryFind b' a' with > | Some a -> loop (a,b'') > | None -> EApply(p r,a,b) // TODO: Will be an error during > partial evaluation time. Could be substituted for an exception here, but I do > not want to have errors during the prepass. > | EModule a' & a, ESymbol(_,b') & b -> > match Map.tryFind b' a' with > | Some a -> a > | None -> EApply(p r,a,b) // TODO: Ditto. > | a,EType(_,b) -> ETypeApply(p r,a,b) > | a,b -> EApply(p r,a,b) > loop (f a, f b) > | RawIfThenElse(r,a,b,c) -> EIfThenElse(p r,f a,f b,f c) > | RawIfThen(r,a,b) -> EIfThen(p r,f a,f b) > | RawPair(r,a,b) -> EPair(p r,f a,f b) > | RawSeq(r,a,b) -> ESeq(p r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> EMutableSet(p r,f a,List.map (fun a -> p > (range_of_expr a), f a) b,f c) > | RawReal(r,a) -> f a > | RawExists(r,(_,Some a),b) -> EExists(p r, List.map (ty env) a, f b) > | RawExists(_,(_,None),_) -> failwith "Compiler error: The exists' vars > should have been added during `fill`." > | RawMacro _ -> failwith "Compiler error: The macro's annotation should > have been added during `fill`." > | RawAnnot(_,RawMacro(r,a),b) -> > let a = a |> List.map (function > | RawMacroText(r,a) -> MText a > | RawMacroTerm(r,a) -> MTerm(f a) > | RawMacroType(r,a) -> MType(ty env a) > | RawMacroTypeLit(r,a) -> MLitType(ty env a) > ) > EMacro(p r,a,ty env b) > | RawMissingBody _ -> failwith "Compiler error: The missing body cases > should have been validated." > | RawAnnot(r,a,b) -> EAnnot(p r,f a,ty env b) > > let env : PartEvalPrepassEnv = > { > term = {|env=Map.empty; i=0; i_rec= -1|} > ty = {|env=Map.empty; i=0|} > } > > let eval_type ((r,(name,kind)) : HoVar) on_succ env = > let id, env = add_ty_var env name > TArrow(id,on_succ env) > let eval_type' env l body = List.foldBack eval_type l body env |> process_ty > > {| > base_type = process_ty > filled_top = fun x -> > let nominal_rec l = > let env,_ = > List.fold (fun (env,i) (r,(_,name),l,body) -> > add_ty env name (TNominal (at_tag i)), i+1 > ) (env, top_env.nominals_next_tag) l > List.fold (fun (term,ty',nominals,i) (r, (_,name),l,body) -> > let r = p r > let at_tag_i = at_tag i > let nom = TNominal at_tag_i > let bodyt = eval_type' env l (fun env -> TJoinPoint(p > (range_of_texpr body), ty env body)) > let term = > match body with > | RawTUnion(_,l,_,_) -> > Map.fold (fun term (_,name) (is_gadt,_) -> > if is_gadt then > let rec loop_outer = function > | TArrow'(_,_,t) -> loop_outer t // GADTs > have the foralls in their cases' type, not here. > | TJoinPoint'(r,_,TUnion(_,(l,_))) -> > let rec loop vars = function > | TForall'(r,scope,id,t) -> > EForall(r,id,loop (id :: vars) t) > | TFun(t,t',_) -> > EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV > 0),t'),Some(TFun(t,t',FT_Vanilla))) > | t' -> > ENominal(r,EPair(r,ESymbol(r,name),EB r),t') > let t = l |> Map.pick (fun (_, k) v -> > if k = name then Some v else None) |> fst > loop [[]] t > | _ -> failwith "Compiler error: Expected a > join point with a gadt union." > Map.add name (loop_outer bodyt |> process_term) > term > else > let rec loop vars = function > | TArrow'(scope,id,t) -> EForall(r,id,loop > (id :: vars) t) > | TJoinPoint'(r,_,TUnion(_,(l,_))) -> > let t = l |> Map.pick (fun (_, k) v -> > if k = name then Some v else None) |> fst > let t' = List.foldBack (fun id nom -> > TApply(r,nom,TV id)) vars nom > match t with > | TB _ -> > ENominal(r,EPair(r,ESymbol(r,name),EB r),t') > | _ -> > EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV > 0),t'),Some(TFun(t,t',FT_Vanilla))) > | _ -> failwith "Compiler error: Expected a > join point with an union." > Map.add name (loop [[]] bodyt |> process_term) > term > ) term l > | _ -> > let rec loop vars = function > | TArrow'(scope,id,t) -> EForall(r,id,loop (id :: > vars) t) > | TJoinPoint'(r,_,t) -> > let t' = List.foldBack (fun id nom -> > TApply(r,nom,TV id)) vars nom > match t with > | TB _ -> ENominal(r,EB r,t') > | _ -> EFun(r,0,ENominal(r,EV > 0,t'),Some(TFun(t,t',FT_Vanilla))) > | _ -> failwith "Compiler error: Expected a join > point." > Map.add name (loop [[]] bodyt |> process_term) term > term,Map.add name nom ty', Map.add at_tag_i {|body=bodyt; > name=name|} nominals, i+1 > ) (Map.empty, Map.empty, Map.empty, top_env.nominals_next_tag) l > match x with > | FType(_,(_,name),l,body) -> AInclude {top_env_emptyPrepass with ty = > Map.add name (eval_type' env l (fun env -> ty env body)) Map.empty} > | FNominal(r,a,b,c) -> > let term,ty,nominals,i = nominal_rec [[r,a,b,c]] > AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals = > nominals; nominals_next_tag=i} > | FNominalRec l -> > let term,ty,nominals,i = nominal_rec l > AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals = > nominals; nominals_next_tag=i} > | FInl(_,(_,name),body) -> AInclude {top_env_emptyPrepass with term = > Map.add name (term env body |> process_term) Map.empty} > | FRecInl l -> > let l, env = > List.mapFold (fun env (_,(_,name),_ as x) -> > let r = ref Unchecked.defaultof<_> > (x,r), add_term_rec env name (ERecursive r) > ) env l > let term = > List.fold (fun top_env_term ((_,(_,name),body),(r : ref<E>)) -> > r.Value <- term env body |> process_term > Map.add name r.Value top_env_term > ) Map.empty l > AInclude {top_env_emptyPrepass with term = term} > | FPrototype(r,(_,name),_,_,_) -> > let i = at_tag top_env.prototypes_next_tag > let r = p r > let x = EForall(r,0,EPrototypeApply(r,i,TV 0)) |> process_term > AInclude {top_env_emptyPrepass with term = Map.add name x Map.empty; > prototypes_next_tag = i.tag+1} > | FInstance(_,(_,prot_id),(_,ins_id),body) -> > AInclude {top_env_emptyPrepass with prototypes_instances = Map.add > (prot_id,ins_id) (term env body |> process_term) Map.empty} > | FOpen(r,a,b) -> > let x = module_openPrepass top_env env a b > AOpen {top_env_emptyPrepass with term=x.term.env; ty=x.ty.env} > |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_defaultPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_defaultPrepass default_env = > let convert_infer_to_prepass x = > let m = Dictionary(HashIdentity.Reference) > let rec f = function > | TyVar (_,{contents=Some x}) -> f x > | TyVar (x,_) -> TV m.[[x.name]] > | TyPrim x -> TPrim x > | TyArray x -> TArray (f x) > | TyLayout(a,b) -> TLayout(f a,b) > | TyInl(a,b) -> let i = m.Count in m.Add(a.name,i); TArrow(i,f b) > | TyFun(a,b,t) -> TFun(f a, f b, t) > | _ -> failwith "Compiler error: The base type in Infer is not > supported in the prepass yet." > f x > > List.fold (fun (top_env : PrepassTopEnv) (k, x) -> > {top_env with ty = Map.add k ((prepassPrepass -1 0 "<base_types>" > top_env).base_type (convert_infer_to_prepass x)) top_env.ty} > ) top_env_emptyPrepass (base_types default_env) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PartEval > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/softcircuits.ordereddictionary/3.2.0/lib/ > net8.0/SoftCircuits.OrderedDictionary.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.Collections.Generic > // open SoftCircuits.Collections > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Tag > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Tag = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### L<'a,'b when 'a: equality and 'a: comparison> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<CustomComparison;CustomEquality>]] L<'a,'b when 'a: equality and 'a: > comparison> = > | L of 'a * 'b > > override a.Equals(b) = > match b with > | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> a = b > | _ -> false > override a.GetHashCode() = match a with L(a,_) -> hash a > interface System.IComparable with > member a.CompareTo(b) = > match b with > | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> compare a b > | _ -> raise <| System.ArgumentException "Invalid comparison for T." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### H<'a when 'a : equality> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type H<'a when 'a : equality>(x : 'a) = > let h = hash x > > member _.Item = x > override _.Equals(b) = > match b with > | :? H<'a> as b -> System.Object.ReferenceEquals(x,b.Item) > | _ -> false > override _.GetHashCode() = h > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### StackSize > > ── fsharp ────────────────────────────────────────────────────────────────────── > type StackSize = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Nominal = {|body : TPrepass; id : GlobalId; name : string|} ConsedNode // > TODO: When the time comes to implement incremental compilation, make the `body` > field a weak reference. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalMacro = Text of string | Type of Ty | TypeLit of Ty > and Ty = > | YVoid > | YB > | YLit of Literal > | YSymbol of string > | YPair of Ty * Ty > | YTypeFunction of body : TPrepass * ty : Ty [[]] * term_stack_size : > StackSize * ty_stack_size : StackSize > | YExists > | YForall > | YRecord of Map<int * string, Ty> > | YPrim of PrimitiveType > | YArray of Ty > | YFun of Ty * Ty * FunType > | YMacro of PartEvalMacro list > | YNominal of Nominal > | YApply of Ty * Ty > | YLayout of Ty * Layout > | YUnion of Union > | YMetavar of Id > and Data = > | DB > | DSymbol of string > | DTLit of Literal > | DPair of Data * Data > | DFunction of body : E * annot : TPrepass option * term : Data [[]] * ty : > Ty [[]] * term_stack_size : StackSize * ty_stack_size : StackSize > | DForall of body : E * term : Data [[]] * ty : Ty [[]] * term_stack_size : > StackSize * ty_stack_size : StackSize > | DExists of vars_type : Ty [[]] * term : Data > | DRecord of Map<int * string, Data> > | DLit of Literal > | DUnion of Data * Union > | DNominal of Data * Ty > | DV of TyV > | DHashSet of HashSet<Data> > | DHashMap of OrderedDictionary<Data,Data> * bool ref > and TyV = L<Tag,Ty> > // Unions always go through a join point which enables them to be compared via > ref eqaulity. > // tags and tag_cases are straightforward mapping from cases for the sake of > efficiency. > and Union = {|cases : Map<int * string, Ty>; layout : UnionLayout; tags : > Dictionary<string, int>; tag_cases : (string * Ty) [[]]; is_degenerate : bool|} > H > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TermVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TermVar = > | WV of TyV > | WLit of Literal > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RData > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RData = > | ReB > | RePair of ConsedNode<RData * RData> > | ReSymbol of string > | ReFunction of ConsedNode<E * RData [[]] * Ty [[]]> // T option and stack > sizes are entirely dependent on the body. And unlike in v0.09/v0.1 there are no > reified join points. > | ReForall of ConsedNode<E * RData [[]] * Ty [[]]> > | ReExists of ConsedNode<Ty [[]] * RData> > | ReRecord of ConsedNode<Map<int * string, RData>> > | ReLit of Literal > | ReTLit of Literal > | ReUnion of ConsedNode<RData * Union> > | ReNominal of ConsedNode<RData * Ty> > | ReV of ConsedNode<Tag * Ty> > | ReHashMap of ConsedNode<(RData * RData)[[]]> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Trace = Range list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JoinPointKey > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JoinPointKey = > | JPMethod of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]> > | JPClosure of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]] * > Ty> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JoinPointCall > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JoinPointCall = JoinPointKey * TyV [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodeMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CodeMacro = > | CMText of string > | CMTerm of Data > | CMType of Ty > | CMTypeLit of Ty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypedBind > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypedBind = > | TyLet of Data * Trace * TypedOp > | TyLocalReturnOp of Trace * TypedOp * Data > | TyLocalReturnData of Data * Trace > > and TypedOp = > | TyMacro of CodeMacro list > | TyOp of Op * Data list > | TyUnionBox of string * Data * Union > | TyUnionUnbox of TyV list * Union * Map<string,Data list * TypedBind [[]]> > * TypedBind [[]] option > | TyIntSwitch of TyV * TypedBind [[]] [[]] * TypedBind [[]] > | TyToLayout of Data * Ty > | TyLayoutIndexAll of TyV > | TyLayoutIndexByKey of TyV * string > | TyLayoutMutableSet of TyV * string list * Data > | TyFailwith of Ty * Data > | TyApply of TyV * Data > | TyConv of Ty * Data > | TySizeOf of Ty > | TyArrayLiteral of Ty * Data list > | TyArrayCreate of Ty * Data > | TyArrayLength of Ty * Data > | TyStringLength of Ty * Data > | TyIf of cond: Data * tr: TypedBind [[]] * fl: TypedBind [[]] > | TyWhile of cond: JoinPointCall * TypedBind [[]] > | TyDo of TypedBind [[]] > | TyIndent of TypedBind [[]] > | TyJoinPoint of JoinPointCall > | TyBackend of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]> * > Range > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRewrite > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRewrite = UnionData of string * Data | UnionBlockers of string Set > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LangEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LangEnv = { > trace : Trace > seq : ResizeArray<TypedBind> > cse : Dictionary<TypedOp, Data> list > unions : Map<TyV, UnionRewrite> > i : int ref > env_global_type : Ty [[]] > env_global_term : Data [[]] > env_stack_type : Ty [[]] > env_stack_term : Data [[]] > backend : string ConsedNode > globals : ResizeArray<string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalTopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalTopEnv = { > prototypes_instances : Dictionary<GlobalId * GlobalId, E> > nominals : Dictionary<GlobalId, Nominal> > backend : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalTypeError > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception PartEvalTypeError of Trace * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_type_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_type_error (d: LangEnv) x = raise (PartEvalTypeError(d.trace,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_to_rdata > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_to_rdata (d: LangEnv) (hc : HashConsTable) call_data = > let hc x = hc.Add x > let m = Dictionary(HashIdentity.Reference) > let call_args = ResizeArray() > let rec f x = > memoize m (function > | DPair(a,b) -> RePair(hc(f a, f b)) > | DSymbol a -> ReSymbol a > | DFunction(a,_,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c)) > | DForall(a,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c)) > | DExists(a,b) -> ReExists(hc(a,f b)) > | DRecord l -> ReRecord(hc(Map.map (fun _ -> f) l)) > | DV(L(_,ty) as t) -> call_args.Add t; ReV(hc > (call_args.Count-1,ty)) > | DLit a -> ReLit a > | DTLit a -> ReTLit a > | DUnion(a,b) -> ReUnion(hc(f a,b)) > | DNominal(a,b) -> ReNominal(hc(f a,b)) > | DB -> ReB > | DHashMap(x,is_writable) when is_writable.Value = false -> x |> > Seq.map (fun kv -> f kv.Key, f kv.Value) |> Seq.toArray |> hc |> ReHashMap > | DHashMap _ -> raise_type_error d "The mutable compile time HashMap > needs to be made immutable before it can be passed through a join point." > | DHashSet _ -> raise_type_error d "The mutable compile-time HashSet > cannot be passed through join points." > ) x > let x = Array.map f call_data > call_args.ToArray(),x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rename_global_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > // This rename is a consideration for when I do incremental compilation. > // In order to allow them to be cleaned by the garbage collection, I do not want > the > // references to unused nodes to end up in anywhere other than join point keys > (which will be weak). > let rename_global_term (s : LangEnv) = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d) > | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f > a,b,c,d) > | DExists(annot,a) -> DExists(annot, f a) > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DV(L(_,ty)) -> let x = DV(L(s.i.Value,ty)) in s.i.Value <- > s.i.Value + 1; x > | DUnion(a,b) -> DUnion(f a,b) > | DNominal(a,b) -> DNominal(f a,b) > | DSymbol _ | DLit _ | DTLit _ | DB as x -> x > | DHashMap(x,is_writable) when is_writable.Value = false -> > let q = OrderedDictionary(HashIdentity.Reference) > x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value)) > DHashMap(q,is_writable) > | DHashMap _ -> raise_type_error s "The mutable compile time HashMap > needs to be made immutable before it can be renamed." > | DHashSet _ -> raise_type_error s "The mutable compile-time > HashSets cannot be renamed." > ) x > {s with env_global_term = Array.map f s.env_global_term} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_free_vars call_data = > let m = HashSet(HashIdentity.Reference) > let free_vars = ResizeArray() > let rec f x = > if m.Add x then > match x with > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DV(L _ as t) -> free_vars.Add t > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DLit _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > free_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_free_vars_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_free_vars_replace s (d : Dictionary<TyV,TyV>) (x : Data) = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d) > | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f > a,b,c,d) > | DExists(annot,a) -> DExists(annot, f a) > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DV(tyv) -> DV(d[[tyv]]) > | DUnion(a,b) -> DUnion(f a,b) > | DNominal(a,b) -> DNominal(f a,b) > | DSymbol _ | DLit _ | DTLit _ | DB as x -> x > | DHashMap(x,is_writable) -> > let q = OrderedDictionary(HashIdentity.Reference) > x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value)) > DHashMap(q,ref is_writable.Value) > | DHashSet _ -> > raise_type_error s "The mutable compile-time HashSets cannot > have their free vars replaced." > ) x > f x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|C|) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|C|) (x : _ ConsedNode) = x.node > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|C'|) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|C'|) (x : _ ConsedNode) = x.node, x.tag > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rdata_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rdata_free_vars call_data = > let m = HashSet(HashIdentity.Structural) > let free_vars = ResizeArray() > let rec g = function // Note: Using the same scheme as in `data_free_vars` > would give wrong results here. Comparing the tags instead is a necessity. > | RePair(C'((a,b),tag)) -> if m.Add tag then g a; g b > | ReForall(C'((_,a,_),tag)) | ReFunction(C'((_,a,_),tag)) -> if m.Add > tag then Array.iter g a > | ReRecord(C'(l,tag)) -> if m.Add tag then Map.iter (fun _ -> g) l > | ReV(C'((a,b),tag)) -> if m.Add tag then free_vars.Add(L(a,b)) > | ReExists(C'((_,a),tag)) | ReUnion(C'((a,_),tag)) | > ReNominal(C'((a,_),tag)) -> if m.Add tag then g a > | ReHashMap(C'(x,tag)) -> if m.Add tag then Array.iter (fun (k,v) -> g > k; g v) x > | ReSymbol _ | ReLit _ | ReTLit _ | ReB -> () > Array.iter g call_data > free_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_term_vars' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_term_vars' call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit _ | DV _ as x -> term_vars.Add(x) > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_nominals > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_nominals call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit _ | DV _ > | DExists _ | DUnion _ | DNominal _ as x -> term_vars.Add(x) > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_term_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_term_vars call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit x -> term_vars.Add(WLit x) > | DV x -> term_vars.Add(WV x) > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_to_primitive_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_to_primitive_type = function > | LitUInt8 _ -> UInt8T > | LitUInt16 _ -> UInt16T > | LitUInt32 _ -> UInt32T > | LitUInt64 _ -> UInt64T > | LitInt8 _ -> Int8T > | LitInt16 _ -> Int16T > | LitInt32 _ -> Int32T > | LitInt64 _ -> Int64T > | LitFloat32 _ -> Float32T > | LitFloat64 _ -> Float64T > | LitBool _ -> BoolT > | LitString _ -> StringT > | LitChar _ -> CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_to_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_to_ty x = lit_to_primitive_type x |> YPrim > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_tco_compatible > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_tco_compatible = function > | TyApply _ | TyJoinPoint _ | TyArrayLiteral _ | TyUnionBox _ | TyToLayout _ > | TyIf _ | TyIntSwitch _ | TyUnionUnbox _ | TyArrayCreate _ | TyFailwith _ > -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### seq_apply > > ── fsharp ────────────────────────────────────────────────────────────────────── > let seq_apply (d: LangEnv) end_dat = > let inline end_ () = d.seq.Add(TyLocalReturnData(end_dat,d.trace)) > if d.seq.Count > 0 then > match d.seq.[[d.seq.Count-1]] with > | TyLet(end_dat',a,b) when > System.Object.ReferenceEquals(end_dat,end_dat') && is_tco_compatible b -> > d.seq.[[d.seq.Count-1]] <- TyLocalReturnOp(a,b,end_dat') > | _ -> end_() > else end_() > d.seq.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### cse_tryfind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let cse_tryfind (d: LangEnv) key = > d.cse |> List.tryPick (fun x -> > match x.TryGetValue key with > | true, v -> Some v > | _ -> None > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### cse_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let cse_add (d: LangEnv) k v = (List.head d.cse).Add(k,v) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_ty x = > let rec f prec x = > let p = p prec > match x with > | YVoid -> "void" > | YB -> "()" > | YLit x -> show_lit x > | YPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b)) > | YSymbol x -> sprintf ".%s" x > | YTypeFunction _ -> p 0 (sprintf "? => ?") > | YForall -> p 0 (sprintf "forall ?. ?") > | YExists -> p 0 (sprintf "exists ?. ?") > | YRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | YUnion l -> sprintf "{%s}" (l.Item.cases |> Map.toList |> List.map > (fun ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat " | ") > | YPrim x -> show_primt x > | YArray a -> p 30 (sprintf "array_base %s" (f 30 a)) > | YFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > | YFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f 19 > b)) > | YFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) (f > 19 b)) > | YMacro a -> p 30 (List.map (function TypeLit a | Type a -> f -1 a | > Text a -> a) a |> String.concat "") > | YApply(a,b) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b)) > | YLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a)) > | YNominal x -> x.node.name > | YMetavar _ -> "?" > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_data > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_data x = > let rec f prec x = > let p = p prec > match x with > | DB -> "()" > | DPair(a,b) -> p 25 (sprintf "%s, %s" (f 25 a) (f 24 b)) > | DSymbol x -> sprintf ".%s" x > | DFunction _ -> p 20 "? -> ?" > | DForall _ -> p 0 "forall ?. ?" > | DExists(a,b) -> > let a = Array.map (show_ty >> sprintf "(%s)") a |> String.concat " " > p 0 $"exists {a}. %s{f 0 b}" > | DRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | DLit a -> show_lit a > | DTLit a -> $"`{show_lit a}" > | DV(L(_,ty)) -> show_ty ty > | DUnion(a,_) -> f prec a > | DNominal(a,b) -> p 0 (sprintf "%s : %s" (f 0 a) (show_ty b)) > | DHashSet _ -> p 0 "<HashSet>" > | DHashMap _ -> p 0 "<HashMap>" > > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit = function > | DLit _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_numeric > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_numeric = function > | YPrim (UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T > | Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_signed_numeric > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_signed_numeric = function > | YPrim (Int8T | Int16T | Int32T | Int64T | Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_non_float_primitive > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_non_float_primitive = function > | YPrim (Float32T | Float64T) -> false > | YPrim _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_primitive > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_primitive = function > | YPrim _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_string = function > | YPrim StringT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_char = function > | YPrim CharT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_float > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_float = function > | YPrim (Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_bool > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_bool = function > | YPrim BoolT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int = function > | YPrim (UInt32T | UInt64T | Int32T | Int64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_any_int = function > | YPrim (UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int64 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int64 = function > | YPrim Int64T -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int32 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int32 = function > | YPrim Int32T -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit_zero = function > | DLit a -> > match a with > | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L > | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL > | LitFloat32 0.0f | LitFloat64 0.0 -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit_one > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit_one = function > | DLit a -> > match a with > | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L > | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL > | LitFloat32 1.0f | LitFloat64 1.0 -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int_lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int_lit_zero = function > | DLit a -> > match a with > | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L > | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int_lit_one > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int_lit_one = function > | DLit a -> > match a with > | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L > | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_zero = function > | YPrim Int8T -> LitInt8 0y > | YPrim Int16T -> LitInt16 0s > | YPrim Int32T -> LitInt32 0 > | YPrim Int64T -> LitInt64 0L > | YPrim UInt8T -> LitUInt8 0uy > | YPrim UInt16T -> LitUInt16 0us > | YPrim UInt32T -> LitUInt32 0u > | YPrim UInt64T -> LitUInt64 0UL > | YPrim Float32T -> LitFloat32 0.0f > | YPrim Float64T -> LitFloat64 0.0 > | _ -> failwith "Compiler error: Expected a numeric value." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### vt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let vt s i = if i < s.env_global_type.Length then s.env_global_type.[[i]] else > s.env_stack_type.[[i-s.env_global_type.Length]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### v > > ── fsharp ────────────────────────────────────────────────────────────────────── > let v s i = if i < s.env_global_term.Length then s.env_global_term.[[i]] else > s.env_stack_term.[[i-s.env_global_term.Length]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_trace (s : LangEnv) r = {s with trace = r :: s.trace} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### store_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let store_term (s : LangEnv) i v = > s.env_stack_term.[[i-s.env_global_term.Length]] <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### store_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let store_ty (s : LangEnv) i v = s.env_stack_type.[[i-s.env_global_type.Length]] > <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_unify > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_unify s x = > let is_metavar = HashSet() > let rec f = function > | YB, YB | YExists, YExists | YForall, YForall -> true > | YFun(a,b,t), YFun(a',b',t') -> t = t' && f (a,a') && f (b,b') > | YApply(a,b), YApply(a',b') > | YPair(a,b), YPair(a',b') -> f (a,a') && f (b,b') > | YSymbol a, YSymbol b -> a = b > | YTypeFunction(a,b,c,d), YTypeFunction(a',b',c',d') -> a = a' && > Array.forall2 (fun b b' -> f (b,b')) b b' && c = c' && d = d' > | YRecord a, YRecord a' -> Map.forall (fun k v' -> match Map.tryFind k a > with Some v -> f (v, v') | None -> false) a' > | YPrim a, YPrim a' -> a = a' > | YArray a, YArray a' -> f (a, a') > | YMacro a, YMacro a' -> > List.forall2 (fun a a' -> > match a, a' with > | Text a, Text a' -> a = a' > | Type a, Type a' -> f (a,a') > | _ -> false > ) a a' > | YNominal a, YNominal a' -> a = a' > | YLayout(a,b), YLayout(a',b') -> f (a,a') && b = b' > | YUnion a, YUnion a' -> a = a' > | YLit a, YLit b -> a = b > | a, YMetavar i -> (is_metavar.Add i && (store_ty s i a; true)) || a = > vt s i > | _ -> false > f x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalResult = { > join_point_method : Dictionary<string ConsedNode * > E,Dictionary<ConsedNode<RData [[]] * Ty [[]]>,TypedBind [[]] option * Ty option > * string option> * HashConsTable> > join_point_closure : Dictionary<string ConsedNode * > E,Dictionary<ConsedNode<RData [[]] * Ty [[]] * Ty>,(Data * TypedBind [[]]) > option> * HashConsTable> > ty_to_data : Ty -> Data > nominal_apply : Ty -> Ty > globals : ResizeArray<string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peval > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peval (env : PartEvalTopEnv) (x : E) = > let join_point_method = Dictionary(HashIdentity.Structural) > let join_point_closure = Dictionary(HashIdentity.Structural) > let join_point_type = Dictionary(HashIdentity.Structural) > let backend_strings = HashConsTable() > > let rec ty_to_data s x = > let f = ty_to_data s > match x with > | YVoid -> raise_type_error s "Compiler error: Cannot construct an > instance of a void type." > | YB -> DB > | YPair(a,b) -> DPair(f a, f b) > | YSymbol a -> DSymbol a > | YRecord l -> DRecord(Map.map (fun _ -> f) l) > | YForall | YExists | YUnion _ | YLayout _ | YPrim _ | YArray _ | YFun _ > | YMacro _ as x -> let r = DV(L(s.i.Value,x)) in s.i.Value <- s.i.Value + 1; r > | YNominal _ | YApply _ as a -> DNominal(nominal_type_apply s a |> > ty_to_data s, a) > | YLit x -> DTLit x > | YTypeFunction _ -> raise_type_error s "Cannot turn a type function > into a runtime variable." > | YMetavar _ -> raise_type_error s "Compiler error: Cannot turn a > metavar into a runtime variable." > and assert_ty_lit s = function > | YSymbol _ | YLit _ as x -> x > | YNominal _ | YApply _ as x -> nominal_type_apply s x |> assert_ty_lit > s > | x -> raise_type_error s <| sprintf "Expected a type literal or a > symbol.\nGot: %s" (show_ty x) > and push_typedop_no_rewrite d op ret_ty = > let ret = ty_to_data d ret_ty > d.seq.Add(TyLet(ret,d.trace,op)) > ret > and push_typedop (d: LangEnv) key ret_ty = > match cse_tryfind d key with > | Some x -> x > | None -> > let x = ty_to_data d ret_ty > d.seq.Add(TyLet(x,d.trace,key)) > cse_add d key x > x > and push_op_no_rewrite' (d: LangEnv) op l ret_ty = push_typedop_no_rewrite d > (TyOp(op,l)) ret_ty > and push_op_no_rewrite d op a ret_ty = push_op_no_rewrite' d op [[a]] ret_ty > and push_binop_no_rewrite d op (a,b) ret_ty = push_op_no_rewrite' d op > [[a;b]] ret_ty > and push_triop_no_rewrite d op (a,b,c) ret_ty = push_op_no_rewrite' d op > [[a;b;c]] ret_ty > > and push_op' d op a ret_ty = push_typedop d (TyOp(op, a)) ret_ty > and push_op d op a ret_ty = push_op' d op [[a]] ret_ty > and push_binop d op (a,b) ret_ty = push_op' d op [[a;b]] ret_ty > and push_triop d op (a,b,c) ret_ty = push_op' d op [[a;b;c]] ret_ty > and closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty) = { > trace = s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > backend = s.backend > globals = s.globals > } > and closure_convert s (body,annot,gl_term,gl_ty,sz_term,sz_ty as args) = > let join_point_key, call_args, fun_ty = > let s : LangEnv = closure_env s args > let domain, range, fun_ty = > match ty s annot with > | YFun(a,b,_) as x -> a,b,x > | annot -> raise_type_error s <| sprintf "Expected a function > type in annotation during closure conversion. Got: %s" (show_ty annot) > let dict, hc_table = memoize join_point_closure (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) (s.backend, body) > let call_args, env_global_value = data_to_rdata s hc_table gl_term > let join_point_key = hc_table.Add(env_global_value, > s.env_global_type, fun_ty) > > match fun_ty with > | YFun(_,_,FT_Pointer) when call_args.Length <> 0 -> > raise_type_error s "Function pointers shouldn't have any runtime free variables > in their environment." > | _ -> () > > match dict.TryGetValue(join_point_key) with > | true, _ -> () > | false, _ -> > let s = rename_global_term s > let domain_data = ty_to_data s domain > s.env_stack_term.[[0]] <- domain_data > dict.[[join_point_key]] <- None > let seq,ty = term_scope'' s body (Some fun_ty) > dict.[[join_point_key]] <- Some(domain_data, seq) > let ty = > match ty with > | YRecord a -> > a > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match range with > | YRecord a -> > a |> Map.tryPick (fun (i', k') _ -> if k = > k' then Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> YRecord > | _ -> ty > if range <> ty then raise_type_error s <| sprintf "The > annotation of the function does not match its body's type.\nGot: %s\nExpected: > %s" (show_ty ty) (show_ty range) > join_point_key, call_args, fun_ty > push_typedop s > (TyJoinPoint(JPClosure((s.backend,body),join_point_key),call_args)) fun_ty, > fun_ty > and data_to_ty s x = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> YPair(f a, f b) > | DSymbol a -> YSymbol a > | DRecord l -> YRecord(Map.map (fun _ -> f) l) > | DUnion(_,a) -> YUnion a > | DNominal(_,a) | DV(L(_,a)) -> a > | DLit x -> lit_to_ty x > | DTLit x -> YLit x > | DB -> YB > | DFunction(body,Some annot,gl_term,gl_ty,sz_term,sz_ty) -> ty > (closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty)) annot > | DExists _ -> YExists > | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot > convert a function that is not annotated into a type." > | DForall _ -> YForall > | DHashSet _ -> raise_type_error s "Cannot convert a compile > time HashSet into a type." > | DHashMap _ -> raise_type_error s "Cannot convert a compile > time HashMap into a type." > ) x > f x > and dyn do_lit s x = > let m = Dictionary(HashIdentity.Reference) > let mutable dirty = false > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DB | DV _ | DTLit _ | DSymbol _ as a -> a > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DNominal(DUnion(DPair(DSymbol k,v),b),b') -> dirty <- true; > push_typedop_no_rewrite s (TyUnionBox(k,f v,b)) b' > | DUnion _ -> raise_type_error s "Compiler error: Malformed > union" > | DNominal(a,b) -> DNominal(f a,b) > | DLit (LitString _ as v) -> dirty <- true; push_op s Dyn x > (lit_to_ty v) > | DLit v as x -> if do_lit then dirty <- true; > push_op_no_rewrite s Dyn x (lit_to_ty v) else x > | DFunction(body,Some annot,term',ty',sz_term,sz_ty) -> dirty <- > true; closure_convert s (body,annot,term',ty',sz_term,sz_ty) |> fst > | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot > convert a function that is not annotated into a runtime variable." > | DExists _ -> raise_type_error s "Cannot dyn an existential > into a runtime var." > | DForall _ -> raise_type_error s "Cannot dyn a forall into a > runtime var." > | DHashSet _ -> raise_type_error s "Cannot dyn a compile time > HashSet into a runtime var." > | DHashMap _ -> raise_type_error s "Cannot dyn a compile time > HashMap into a runtime var." > ) x > let v = f x > if dirty then v else x > and term_real_nominal s x = > let s = {s with seq=ResizeArray(); > cse=Dictionary(HashIdentity.Structural) :: s.cse} > term s x |> data_to_ty s > and term_scope'' s x fun_ty = > let x = term s x |> dyn false s > let x = > match x with > | DRecord c -> > c > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match fun_ty with > | Some (YFun (YNominal _, YRecord a, _) | YRecord a) -> > a |> Map.tryPick (fun (i', k') _ -> if k = k' then > Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> DRecord > | _ -> x > let x_ty = data_to_ty s x > seq_apply s x, x_ty > and term_scope' s cse x = term_scope'' {s with seq=ResizeArray(); cse=cse :: > s.cse} x None > and term_scope s x = term_scope' s (Dictionary(HashIdentity.Structural)) x > and nominal_type_apply s x = > match x with > | YApply(a,b) -> > match nominal_type_apply s a with > | YTypeFunction(body,gl_ty,sz_term,sz_ty) -> > let s = > {s with > env_global_type = gl_ty > env_global_term = [[||]] > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > ty s body > | a -> raise_type_error s <| sprintf "Expected a type level function > in nominal application.\nGot: %s" (show_ty a) > | YNominal a -> ty s a.node.body > | _ -> raise_type_error s <| sprintf "Expected a nominal or a deferred > type apply.\nGot: %s" (show_ty x) > and ty s x = > match x with > | TPatternRef _ -> failwith "Compiler error: TPatternRef should have > been eliminated during the prepass." > | TForall _ | TArrow _ | TJoinPoint _ -> failwith "Compiler error: > Should have been transformed during the prepass." > | TMetaV i -> YMetavar i > | TArrow'(scope,i,body) -> > assert (i = scope.ty.free_vars.Length) > YTypeFunction(body,Array.map (vt s) > scope.ty.free_vars,scope.term.stack_size,scope.ty.stack_size) > | TForall' _ -> YForall > | TExists -> YExists > | TJoinPoint'(r,scope,body) -> > let env_global_type = Array.map (vt s) scope.ty.free_vars > let env_global_term = Array.map (v s) scope.term.free_vars > > let dict, hc_table = memoize join_point_type (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) body > let join_point_key = hc_table.Add(env_global_type) > match dict.TryGetValue(join_point_key) with > | true, Some ret_ty -> ret_ty > | true, None -> raise_type_error (add_trace s r) "Type join points > must not be unboxed during their definition." > | false, _ -> > assert (0 = scope.term.free_vars.Length) > let s : LangEnv = { > trace = r :: s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = env_global_type > env_global_term = env_global_term > env_stack_type = Array.zeroCreate<_> scope.ty.stack_size > env_stack_term = Array.zeroCreate<_> scope.term.stack_size > backend = s.backend > globals = s.globals > } > let s = rename_global_term s > dict.[[join_point_key]] <- None > let ret_ty = ty s body > dict.[[join_point_key]] <- Some ret_ty > ret_ty > | TB _ -> YB > | TLit(_,x) -> YLit x > | TV i -> vt s i > | TPair(_,a,b) -> YPair(ty s a, ty s b) > | TFun(a,b,t) -> YFun(ty s a, ty s b,t) > | TModule a -> > YRecord( > a > |> Seq.mapi (fun i (KeyValue (k, v)) -> (i, k), (v |> ty s)) > |> Map.ofSeq > ) > | TRecord(_,a) -> YRecord(Map.map (fun _ -> ty s) a) > | TUnion(_,(a,b)) -> > let tags = Dictionary() > let tag_cases = Array.zeroCreate (Map.count a) > let mutable is_degenerate = true > let cases = > Map.fold (fun cases (i,k) v -> > let v = Option.defaultValue (fst v) (snd v) // If the union > case is generalized, use the specialized destructor instead of the constructor > to evaluate the type. > match ty s v with > | YVoid -> cases > | v -> > is_degenerate <- is_degenerate && match v with YB -> > true | _ -> false > tags.[[k]] <- i > tag_cases.[[i]] <- (k,v) > Map.add (i,k) v cases > ) Map.empty a > YUnion(H {|cases=cases; layout=b; tags=tags; tag_cases=tag_cases; > is_degenerate=is_degenerate|}) > | TTypecase(r,a,b) -> > let s = add_trace s r > let a = ty s a > let rec loop = function > | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(ty s b) > else loop rest > | [[]] -> None > match loop b with > | Some r -> r > | None -> YVoid > | TSymbol(_,a) -> YSymbol a > | TApply(r,a,b) -> > let s = add_trace s r > match ty s a with > | YRecord a -> > match ty s b with > | YSymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v > else None) with > | Some x -> x > | None -> raise_type_error s <| sprintf "Cannot find key %s > in the record." b > | b -> raise_type_error s <| sprintf "Expected a symbol in the > record application.\nGot: %s" (show_ty b) > | YMetavar _ | YNominal _ | YApply _ as a -> YApply(a,ty s b) > | YTypeFunction(body,gl_ty,sz_term,sz_ty) -> > let b = ty s b > let s = > {s with > env_global_type = gl_ty > env_global_term = [[||]] > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > ty s body > | a -> raise_type_error s <| sprintf "Expected a record, nominal or > a type function. Or a metavar when in typecase.\nGot: %s" (show_ty a) > | TPrim a -> YPrim a > | TTerm(_,a) -> term_real_nominal s a > | TMacro(r,a) -> > let s = add_trace s r > YMacro(a |> List.map (function TMText a -> Text a | TMType a -> > Type(ty s a) | TMLitType a -> TypeLit(ty s a |> assert_ty_lit s))) > | TNominal i -> YNominal env.nominals.[[i]] > | TArray a -> YArray(ty s a) > | TLayout(a,b) -> YLayout(ty s a,b) > and term (s : LangEnv) x = > > let global' = > let has_added = HashSet s.globals > fun x -> if has_added.Add(x) then s.globals.Add x > > let term2 s a b = term s a, term s b > let term3 s a b c = term s a, term s b, term s c > let type_apply s a b = > match a with > | DForall(body,gl_term,gl_ty,sz_term,sz_ty) -> > let s = > {s with > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > term s body > | DV(L(_,YForall)) -> raise_type_error s <| sprintf "Cannot apply a > runtime forall during the partial evaluation stage." > | a -> raise_type_error s <| sprintf "Expected a forall.\nGot: %s" > (show_data a) > > let rec apply s = function > | DNominal(DUnion _,_), _ -> raise_type_error s "Unions cannot be > applied." > | DNominal(a,_), b -> apply s (a,b) > | DRecord a, DSymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v > else None) with > | Some a -> a > | None -> raise_type_error s <| sprintf "Cannot find the key %s > inside the record." b > | DFunction(body,_,gl_term,gl_ty,sz_term,sz_ty), b -> > let s : LangEnv = > {s with > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_term.[[0]] <- b > term s body > | DV(L(_,YForall)), _ -> raise_type_error s "Cannot apply a runtime > forall, and not with a term. Foralls have to be known at compile time and > applied with a type." > | DForall _, _ -> raise_type_error s "Cannot apply a forall with a > term." > | DV(L(_,YFun(domain,range,t) & a_ty) & a), b -> > let b = dyn false s b > let b_ty = data_to_ty s b > if domain = b_ty then push_typedop_no_rewrite s (TyApply(a,b)) > range > else raise_type_error s <| sprintf "Cannot apply an argument of > type %s to a function of type: %s" (show_ty b_ty) (show_ty a_ty) > | DV(L(i,YLayout(ty,layout)) as tyv) as a, DSymbol b -> > let key = TyLayoutIndexByKey(tyv, b) > let ret_ty = > match ty with > | YRecord r -> > match r |> Map.tryPick (fun (i, k) v -> if k = b then > Some (i,v) else None) with > | Some (_i, a) -> a > | None -> raise_type_error s <| sprintf "Cannot find the > key %s inside the layout type's record." b > | _ -> raise_type_error s <| sprintf "Expected a record > inside the layout type.\nGot: %s" (show_ty ty) > match layout with > | Heap | StackMutable | HeapMutable -> push_typedop_no_rewrite s > key ret_ty > | DV(L(_,YLayout _)), b -> raise_type_error s <| sprintf "Expected a > symbol as the index into the layout type.\nGot: %s" (show_data b) > | a,_ -> raise_type_error s <| sprintf "Expected a function, > closure, record or a layout type possibly inside a nominal.\nGot: %s" (show_data > a) > > let rec if_ s cond on_succ on_fail = > match cond with > | DLit (LitBool true) -> term s on_succ > | DLit (LitBool false) -> term s on_fail > | DV(L(_,YPrim BoolT & type_bool)) -> > let lit_tr = DLit(LitBool true) > match cse_tryfind s (TyOp(EQ, [[cond; lit_tr]])) with > | Some cond -> if_ s cond on_succ on_fail > | None -> > let lit_fl = DLit(LitBool false) > let add_rewrite_cases is_true = > let cse = Dictionary(HashIdentity.Structural) > let tr,fl = if is_true then lit_tr, lit_fl else lit_fl, > lit_tr > let inline op op cond' res = > cse.Add(TyOp(op,[[cond;cond']]),res); cse.Add(TyOp(op,[[cond';cond]]),res) > op EQ lit_tr tr; op NEQ lit_tr fl; op EQ lit_fl fl; op > NEQ lit_fl tr > cse > let tr, type_tr = term_scope' s (add_rewrite_cases true) > on_succ > let fl, type_fl = term_scope' s (add_rewrite_cases false) > on_fail > let type_tr, type_fl = > match type_tr, type_fl with > | YRecord tr, YRecord fl -> > let tr = > tr > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > fl |> Map.tryPick (fun (i', k') _ -> if > k = k' then Some i' else None) > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> YRecord > > let fl = > fl > |> Seq.map (fun (KeyValue ((i, k), v)) -> > k, ((i, k), v) > ) > |> Seq.distinctBy fst > |> Seq.map snd > |> Map.ofSeq > |> YRecord > > tr, fl > > | _ -> > type_tr, type_fl > > if type_tr = type_fl then > if tr.Length = 1 && fl.Length = 1 then > match tr.[[0]], fl.[[0]] with > | TyLocalReturnOp(_,tr,_), TyLocalReturnOp(_,fl,_) > when tr = fl -> push_typedop_no_rewrite s tr type_tr > | TyLocalReturnData(tr',_), TyLocalReturnData(fl',_) > -> > match tr', fl' with > | tr, fl when tr = fl -> tr > | DLit(LitBool false), DLit(LitBool true) -> > push_binop s EQ (cond,lit_fl) type_bool > | DLit(LitBool false), fl when cond = fl -> > lit_fl > | DLit(LitBool true), fl -> // boolean or > match fl with > | DLit (LitBool false) -> cond > | _ -> if cond = fl then cond else > push_binop s BoolOr (cond,fl) type_bool > | tr, DLit(LitBool false) -> // boolean and > match tr with > | DLit(LitBool true) -> cond > | _ -> if cond = tr then cond else > push_binop s BoolAnd (cond,tr) type_bool > | _ -> push_typedop_no_rewrite s > (TyIf(cond,tr,fl)) type_tr > | _ -> push_typedop_no_rewrite s (TyIf(cond,tr,fl)) > type_tr > else push_typedop_no_rewrite s (TyIf(cond,tr,fl)) > type_tr > else raise_type_error s <| sprintf "Types in branches of If > do not match.\nGot: %s and %s" (show_ty type_tr) (show_ty type_fl) > | cond -> raise_type_error s <| sprintf "Expected a bool in > conditional.\nGot: %s" (show_data cond) > > let eq s a b = > let inline op a b = a = b > match a,b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive > a_ty -> LitBool true |> DLit > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > match a, b with > | DLit (LitBool true), x | x, DLit (LitBool true) -> x > | _ -> > if is_primitive a_ty then push_binop s EQ (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > let default_lit s (a : string) b = > let inline f string_to_val val_to_lit val_dsc = > match string_to_val a with > | true, x -> val_to_lit x > | false, _ -> raise_type_error s <| sprintf "Cannot parse the > literal as: %s" val_dsc > match b with > | YPrim Float32T -> f System.Single.TryParse LitFloat32 "f32" > | YPrim Float64T -> f System.Double.TryParse LitFloat64 "f64" > | YPrim Int8T -> f System.SByte.TryParse LitInt8 "i8" > | YPrim Int16T -> f System.Int16.TryParse LitInt16 "i16" > | YPrim Int32T -> f System.Int32.TryParse LitInt32 "i32" > | YPrim Int64T -> f System.Int64.TryParse LitInt64 "i64" > | YPrim UInt8T -> f System.Byte.TryParse LitUInt8 "u8" > | YPrim UInt16T -> f System.UInt16.TryParse LitUInt16 "u16" > | YPrim UInt32T -> f System.UInt32.TryParse LitUInt32 "u32" > | YPrim UInt64T -> f System.UInt64.TryParse LitUInt64 "u64" > | b -> raise_type_error s <| sprintf "Expected a numberic type > (f32,f64,i8,i16,i32,i64,u8,u16,u32,u64) as the type of literal.\nGot: %s" > (show_ty b) > > let lit_test s a bind on_succ on_fail = > let b = v s bind > if lit_to_ty a = data_to_ty s b then if_ s (eq s (DLit a) b) on_succ > on_fail > else term s on_fail > > let inline nan_guardf32 x = if System.Single.IsNaN x then > raise_type_error s "A 32-bit floating point operation resulting in a nan > detected at compile time." else x > let inline nan_guardf64 x = if System.Double.IsNaN x then > raise_type_error s "A 64-bit floating point operation resulting in a nan > detected at compile time." else x > > let eforall (free_vars : Scope,i,body) = > assert (free_vars.ty.free_vars.Length = i) > DForall(body,Array.map (v s) free_vars.term.free_vars,Array.map (vt > s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size) > > let efun (free_vars : Scope,i,body,annot) = > assert (free_vars.term.free_vars.Length = i) > DFunction(body,annot,Array.map (v s) > free_vars.term.free_vars,Array.map (vt s) > free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size) > > let enominal (r,a,b) = > let a = term s a > let b = ty s b > match nominal_type_apply s b with > | YUnion h -> > match a with > | DPair(DSymbol k, v) -> > let v_ty = data_to_ty s v > match Map.tryPick (fun (_, name') v -> if k = name' then > Some v else None) h.Item.cases with > | Some v_ty' when v_ty = v_ty' -> DNominal(DUnion(a,h),b) > | Some v_ty' -> raise_type_error s <| sprintf "For key %s, > The type of the value does not match the union case.\nGot: %s\nExpected: %s" k > (show_ty v_ty) (show_ty v_ty') > | None -> raise_type_error s <| sprintf "The union does not > have key %s.\nGot: %s" k (show_ty b) > | _ -> raise_type_error s <| sprintf "Expected key/value > pair.\nGot: %s" (show_data a) > | b' -> > let a = > match a with > | DRecord a -> > a > |> Seq.map (fun (KeyValue ((i, k), v)) -> > k, ((i, k), v) > ) > |> Seq.distinctBy fst > |> Seq.map snd > |> Map.ofSeq > |> DRecord > | _ -> a > > let a_ty = data_to_ty s a > > if a_ty = b' then DNominal(a,b) > else raise_type_error s <| sprintf "Type error in nominal > constructor.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b') > > let ty_union s x = > let x = ty s x > match nominal_type_apply s x with > | YUnion x -> x > | _ -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" > (show_ty x) > > let ty_record s x = > match ty s x with > | YRecord l -> l > | x -> raise_type_error s <| sprintf "Expected a type record.\nGot: > %s" (show_ty x) > > let to_i32 x = > try > match x with > | LitUInt8 x -> System.Convert.ToInt32(x) > | LitUInt16 x -> System.Convert.ToInt32(x) > | LitUInt32 x -> System.Convert.ToInt32(x) > | LitUInt64 x -> System.Convert.ToInt32(x) > | LitInt8 x -> System.Convert.ToInt32(x) > | LitInt16 x -> System.Convert.ToInt32(x) > | LitInt32 x -> System.Convert.ToInt32(x) > | LitInt64 x -> System.Convert.ToInt32(x) > | x -> raise_type_error s <| sprintf "Expected an int > convertible to an i32.\nGot: %s" (show_lit x) > with :? System.OverflowException -> raise_type_error s <| sprintf > "The literal cannot be converted to an i32 as it is either too small or to > big.\nGot: %s" (show_lit x) > > let record2 (a,b) (a',b') = DRecord(Map.empty |> Map.add a b |> Map.add > a' b') > let record3 (a,b) (a',b') (a'',b'') = DRecord(Map.empty |> Map.add a b > |> Map.add a' b' |> Map.add a'' b'') > > match x with > | EPatternRef _ -> failwith "Compiler error: EPatternRef should have > been eliminated during the prepass." > | EB _ -> DB > | EV a -> v s a > | ELit(_,a) -> DLit a > | ESymbol(_,a) -> DSymbol a > | EFun _ -> failwith "Compiler error: Raw functions should be > transformed during the prepass." > | EFun'(_,free_vars,i,body,annot) -> efun (free_vars,i,body,annot) > | ERecursiveFun'(_,free_vars,i,body,annot) -> efun > (free_vars,i,body.Value,annot) > | EForall _ -> failwith "Compiler error: Raw foralls should be > transformed during the prepass." > | EForall'(_,free_vars,i,body) -> eforall (free_vars,i,body) > | ERecursiveForall'(_,free_vars,i,body) -> eforall > (free_vars,i,body.Value) > | ERecursive a -> term s a.Value > | ERecBlock _ -> failwith "Compiler error: Recursive blocks should be > inlined and eliminated during the prepass." > | EJoinPoint _ -> failwith "Compiler error: Raw join points should be > transformed during the prepass." > | EJoinPoint'(r,scope,body,annot,backend,jp_name) -> > let env_global_type = Array.map (vt s) scope.ty.free_vars > let env_global_term = Array.map (v s) scope.term.free_vars > > let backend' = match backend with None -> s.backend | Some > (_,backend) -> backend_strings.Add backend > let dict, hc_table = memoize join_point_method (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) (backend', body) > let call_args, env_global_value = data_to_rdata s hc_table > env_global_term > let join_point_key = hc_table.Add(env_global_value, env_global_type) > > let ret_ty = > match dict.TryGetValue(join_point_key) with > | true, (_, Some ret_ty, _) -> ret_ty > | true, (_, None, _) -> raise_type_error (add_trace s r) > "Recursive join points must be annotated." > | false, _ -> > let s : LangEnv = { > trace = r :: s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = env_global_type > env_global_term = env_global_term > env_stack_type = Array.zeroCreate<_> scope.ty.stack_size > env_stack_term = Array.zeroCreate<_> > scope.term.stack_size > backend = backend' > globals = s.globals > } > let s = rename_global_term s > let annot = Option.map (ty s) annot > dict.[[join_point_key]] <- (None, annot, jp_name) > let seq,ty = term_scope'' s body annot > dict.[[join_point_key]] <- (Some seq, Some ty, jp_name) > annot |> Option.iter (fun annot -> if annot <> ty then > raise_type_error s <| sprintf "The annotation of the join point does not match > its body's type.Got: %s\nExpected: %s" (show_ty ty) (show_ty annot)) > ty > > match backend with > | None -> push_typedop_no_rewrite s > (TyJoinPoint(JPMethod((backend',body),join_point_key),call_args)) ret_ty > | Some (range,_) -> > let method_name = push_typedop_no_rewrite s > (TyBackend((backend',body),join_point_key,range)) (YPrim Int32T) > let call_args = Array.foldBack (fun v s -> DPair(DV v,s)) > call_args DB > DPair(method_name, call_args) > | EDefaultLit(r,a,b) -> let s = add_trace s r in default_lit s a (ty s > b) |> DLit > | EType(r,_) -> raise_type_error (add_trace s r) "Raw types are not > allowed on the term level." > | EApply(r,a,b) -> let s = add_trace s r in apply s (term s a, term s b) > | ETypeApply(r,a,b) -> > let s = add_trace s r > type_apply s (term s a) (ty s b) > | ERecordWith(r,vars,withs,withouts) -> > let s = add_trace s r > let map x = > let fold f a b = List.fold f b a > let var r a = > match term s a with > | DSymbol a -> a > | a -> raise_type_error (add_trace s r) <| sprintf "Expected > a symbol.\nGot: %s" (show_data a) > x |> fold (fun m x -> > let sym a b = > let i = > m > |> Map.tryPick (fun (i, k) _v -> if k = a then Some > i else None) > |> Option.defaultValue m.Count > Map.add (i, a) (term s b) m > let sym_mod r a b = > match m |> Map.tryPick (fun (i, k) v -> if k = a then > Some (i, v) else None) with > | Some (i, a') -> Map.add (i, a) (apply s (term s b, > a')) m > | None -> raise_type_error (add_trace s r) "Cannot find > key %s in record." a > match x with > | RSymbol((_,a),b) -> sym a b > | RSymbolModify((r,a),b) -> sym_mod r a b > | RVar((r,a),b) -> sym (var r a) b > | RVarModify((r,a),b) -> sym_mod r (var r a) b > ) withs > |> fold (fun m -> function > | WSymbol(r,a) -> > m |> Map.filter (fun (_, k) _ -> k <> a) > | WVar(r,a) -> > m |> Map.filter (fun (_, k) _ -> k <> var r a) > ) withouts > > let rec dive m = function > | (r,x) :: xs -> > let s = add_trace s r > match term s x with > | DSymbol b -> > let v = > m |> Map.tryPick (fun (i, k) v -> if k = b then Some > (i, v) else None) > match v with > | Some (i, DRecord a) -> Map.add (i, b) (DRecord (dive a > xs)) m > | Some a -> raise_type_error s <| sprintf "Expected a > record as the result of indexing.\nGot: %s" (show_data (a |> snd)) > // match Map.tryFind b m with > // | Some (DRecord a) -> Map.add b (DRecord (dive a xs)) > m > // | Some a -> raise_type_error s <| sprintf "Expected a > record as the result of indexing.\nGot: %s" (show_data a) > | None -> raise_type_error s <| sprintf "Cannot find the > key %s in a record." b > | b -> raise_type_error s <| sprintf "Expected a > symbol.\nGot: %s" (show_data b) > | [[]] -> m |> map > > match vars with > | (r,x) :: xs -> > match term s x with > | DRecord l -> dive l xs > | a -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data a) > | [[]] -> map Map.empty > |> DRecord > | EPatternMemo _ | EReal _ -> failwith "Compiler error: Should have been > eliminated during the prepass." > | EModule a -> DRecord(a |> Seq.map (fun (KeyValue (k, v)) -> (a.Count, > k), (v |> term s)) |> Map.ofSeq) > | EPair(r,a,b) -> DPair(term s a, term s b) > | ESeq(r,a,b) -> > let s = add_trace s r > match term s a with > | DB -> term s b > | a -> raise_type_error s <| sprintf "Expected unit.\nGot: %s" > (show_data a) > | EAnnot(r,a,b) -> > let s = add_trace s r > let a = term s a > let a_ty = data_to_ty s a > let b = ty s b > if a_ty <> b then raise_type_error s <| sprintf "The body does not > match the annotation.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b) > a > | EExists(r,a,b) -> > let s = add_trace s r > let a = List.map (ty s) a |> List.toArray > let b = term s b > DExists(a,b) > | EPatternMiss a -> raise_type_error s <| sprintf "Pattern miss.\nGot: > %s" (show_data (term s a)) > | ETypePatternMiss a -> raise_type_error s <| sprintf "Pattern > miss.\nGot: %s" (show_ty (ty s a)) > | EIfThenElse(r,cond,tr,fl) -> let s = add_trace s r in if_ s (term s > cond) tr fl > | EIfThen(r,cond,tr) -> let s = add_trace s r in if_ s (term s cond) tr > (EB r) > | EMutableSet(r,a,b,c) -> > let s = add_trace s r > let a,a_layout_ty = > match term s a with > | DV(L(i,YLayout(a_layout_ty,(StackMutable | HeapMutable))) & a) > -> a,a_layout_ty > | DV(L(_,YLayout _)) -> raise_type_error s "Expected a mutable > layout type, but got an immutable one." > | a -> raise_type_error s <| sprintf "Expected a mutable layout > type.\nGot: %s" (show_data a) > let b = > List.map (fun (r,b) -> > match term s b with > | DSymbol b -> r,b > | b -> raise_type_error (add_trace s r) <| sprintf "Expected > a symbol.\nGot: %s" (show_data b) > ) b > let c_ty = > List.fold (fun (r,a) (r',b) -> > match a with > | YRecord a -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then > Some v else None) with > | Some a -> r', a > | None -> raise_type_error (add_trace s r) <| sprintf > "Key %s not found in the layout type." b > | a -> raise_type_error (add_trace s r) <| sprintf "Expected > a record.\nGot: %s" (show_ty a) > ) (r,a_layout_ty) b |> snd > let c = term s c |> dyn false s > let c = > match c with > | DRecord c -> > c > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match c_ty with > | YRecord a -> > a |> Map.tryPick (fun (i', k') _ -> if k = k' > then Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> DRecord > | _ -> c > let c_ty' = data_to_ty s c > if c_ty' = c_ty then push_typedop_no_rewrite s > (TyLayoutMutableSet(a,List.map snd b,c)) YB > else raise_type_error s <| sprintf "The two side do not have the > same type.\nGot: %s\nExpected: %s" (show_ty c_ty') (show_ty c_ty) > | EMacro(r,a,b) -> > let s = add_trace s r > let a = a |> List.map (function MText x -> CMText x | MTerm x -> > CMTerm(term s x |> dyn false s) | MType x -> CMType(ty s x) | MLitType x -> > CMTypeLit(ty s x |> assert_ty_lit s)) > push_typedop_no_rewrite s (TyMacro(a)) (ty s b) > | EPrototypeApply(_,prot_id,b) -> > let rec loop = function > | YNominal b -> > match > env.prototypes_instances.TryGetValue((prot_id,b.node.id)) with > | true,x -> term s x > | _ -> raise_type_error s "An instance of the prototype > being applied could be found in the dictionary." > | YApply(a,b) -> type_apply s (loop a) b > | b -> raise_type_error s <| sprintf "Expected a nominal or a > deferred type apply.\nGot: %s" (show_ty b) > loop (ty s b) > | EOp(r,NominalCreate,[[a;EType(_,b)]]) | ENominal(r,a,b) -> enominal > (r,a,b) > | EUnbox(r,k,id,a,on_succ,on_fail) -> > let s = add_trace s r > let run s a = store_term s id a; term s on_succ > match term s a with > | DNominal(DUnion(DPair(DSymbol k',a),_),_) -> if k = k' then run s > a else term s on_fail > | DNominal(DV(L(_,YUnion h) & i),_) -> > let body blk = > match Map.tryPick (fun (_, name') v -> if k = name' then > Some v else None) h.Item.cases with > | Some v when Set.contains k blk = false -> > let on_succ, ret_ty = > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData (k,a)) > s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = > ResizeArray()} > let x = run s a |> dyn false s > Map.add k ([[a]], (seq_apply s x)) Map.empty, > data_to_ty s x > let on_succ,on_fails = > let blk = Set.add k blk > if blk.Count = h.Item.cases.Count then on_succ, None > // Have to do this otherwise it would have hit EPatternMiss > else > let on_fails, ret_ty' = term_scope {s with > unions = Map.add i (UnionBlockers blk) s.unions} on_fail > if ret_ty <> ret_ty' then raise_type_error s > $"The types of two branches of an union unbox do not match.\nGot: {show_ty > ret_ty}\nAnd: {show_ty ret_ty'}" > match on_fails with > | > [[|TyLocalReturnOp(_,TyUnionUnbox([[i']],_,on_succ',on_fail'),_)|]] when i = i' > -> Map.foldBack Map.add on_succ' on_succ , on_fail' > | _ -> on_succ, Some on_fails > push_typedop_no_rewrite s > (TyUnionUnbox([[i]],h,on_succ,on_fails)) ret_ty > | _ -> term s on_fail > match Map.tryFind i s.unions with > | Some (UnionData (k',a)) -> if k = k' then run s a else term s > on_fail > | Some (UnionBlockers blk) -> body blk > | None -> body Set.empty > | _ -> term s on_fail > | EOp(r,Unbox,[[a;on_succ]]) -> > let s = add_trace s r > let on_succ = term s on_succ > let run s a = apply s (on_succ,a) > match term s a with > | DNominal(DUnion(a,_),_) -> run s a > | DNominal(DV(L(_,YUnion h) & i) & a,_) -> > let body blk = > let cases, case_ty = > Map.fold (fun (m, case_ty) (_, k) v -> > if Set.contains k blk = false then > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData > (k,a)) s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = > ResizeArray()} > let x = run s (DPair(DSymbol k, a)) |> dyn false > s > let x_ty' = data_to_ty s x > let case_ty = > match case_ty with > | Some x_ty when x_ty' <> x_ty -> > raise_type_error s <| sprintf "One union case for key %s has a different return > that the previous one.\nGot: %s\nExpected: %s" k (show_ty x_ty') (show_ty x_ty) > | Some _ -> case_ty > | None -> Some x_ty' > Map.add k ([[a]], seq_apply s x) m, case_ty > else > m, case_ty > ) (Map.empty,None) h.Item.cases > push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,cases,None)) > (Option.get case_ty) > match Map.tryFind i s.unions with > | Some (UnionData (k,a)) -> run s (DPair(DSymbol k, a)) > | Some (UnionBlockers blk) -> body blk > | None -> body Set.empty > | a -> raise_type_error s <| sprintf "Expected an union type.\nGot: > %s" (show_data a) > | EOp(r,Unbox2,[[a;b;on_succ;on_fail]]) -> > let s = add_trace s r > let on_succ = term s on_succ > let on_fail = term s on_fail > let mutable case_ty = None > let s' () = {s with cse = Dictionary(HashIdentity.Structural) :: > s.cse; seq = ResizeArray()} > let assert_case_ty s x = > let x_ty' = data_to_ty s x > match case_ty with > | Some x_ty -> if x_ty' <> x_ty then raise_type_error s <| > sprintf "One union case has a different return than the previous one.\nGot: > %s\nExpected: %s" (show_ty x_ty') (show_ty x_ty) > | None -> case_ty <- Some x_ty' > let run s x = > let x = apply s x |> dyn false s > assert_case_ty s x > seq_apply s x > let case_on_fail () = run (s'()) (on_fail, DB) > let key_value = function > | DPair(DSymbol k, a) -> k, a > | _ -> failwith "Compiler error: Malformed union." > match term s a, term s b with > | DNominal(DUnion(_,h),_), DNominal(DUnion(_,h'),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h')) > | DNominal(DUnion(a,_),_), DNominal(DUnion(a',_),_) -> > let k,a = key_value a > let k',a' = key_value a' > if k = k' then apply s (on_succ, DPair(DSymbol k, DPair(a, a'))) > else apply s (on_fail, DB) > | DNominal(DV(L(_,YUnion h)),_), DNominal(DUnion(_,h'),_) | > DNominal(DUnion(_,h),_), DNominal(DV(L(_,YUnion h')),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h')) > | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DUnion(a',_),_) -> > let k,a' = key_value a' > let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = > name' then Some v else None) > let case_on_succ = > let s = s'() > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData (k,a)) > s.unions} > [[a]], run s (on_succ, DPair(DSymbol k, DPair(a, a'))) > push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,Map.add k > case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty) > | DNominal(DUnion(a,_),_), DNominal(DV(L(_,YUnion h) & i'),_) -> > let k,a = key_value a > let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = > name' then Some v else None) > let case_on_succ = > let s = s'() > let a' = ty_to_data s v > let s = {s with unions = Map.add i' (UnionData (k,a')) > s.unions} > [[a']], run s (on_succ, DPair(DSymbol k, DPair(a, a'))) > push_typedop_no_rewrite s (TyUnionUnbox([[i']],h,Map.add k > case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty) > | DNominal(DV(L(_,YUnion h & t)),_), DNominal(DV(L(_,YUnion h' & > t')),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty t) (show_ty t') > | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DV(L(_,YUnion _) & > i'),_) -> > let cases_on_succ = > Map.map (fun (_, k) v -> > let s = s'() > let a,a' = ty_to_data s v, ty_to_data s v > let s = {s with unions = > let u = s.unions > let u = Map.add i (UnionData (k,a)) > u > Map.add i' (UnionData (k,a')) u > } > [[a;a']], run s (on_succ, DPair(DSymbol k, DPair(a, > a'))) > ) h.Item.cases > |> Seq.map (fun (KeyValue ((_, k), v)) -> k, v) > |> Map.ofSeq > push_typedop_no_rewrite s > (TyUnionUnbox([[i;i']],h,cases_on_succ,Some (case_on_fail()))) (Option.get > case_ty) > | a,a' -> raise_type_error s <| sprintf "Expected two union > types.\nGot: %s\nAnd: %s" (show_data a) (show_data a') > | EOp(r,UnionUntag,[[EType(_,t);a;on_succ;on_fail]]) -> > let t = ty s t > match nominal_type_apply s t with > | YUnion h -> > let h = h.Item > let on_succ, on_fail = term s on_succ, term s on_fail > let lit i = > if 0 <= i && i < h.tag_cases.Length then > let k,v = h.tag_cases.[[i]] > type_apply s (apply s (on_succ, DSymbol k)) v > else raise_type_error s $"Invalid tag 0 <= {i} < > {h.tag_cases.Length} in UnionUntag." > match term s a with > | DV(L(i,YPrim Int32T) as tyv) as a -> > let key = TyOp(UnionUntag,[[a]]) > match cse_tryfind s key with > | Some(DLit(LitInt32 i)) -> lit i > | Some _ -> failwith "Compiler error: Expected an 32-bit > int." > | None -> > let on_fail, on_fail_ty = > let s = {s with cse = > Dictionary(HashIdentity.Structural) :: s.cse; seq = ResizeArray()} > let r = apply s (on_fail, DB) |> dyn false s > seq_apply s r, data_to_ty s r > let on_succ = > Array.mapi (fun i (k,v) -> > let cse = Dictionary(HashIdentity.Structural) > cse.Add(key,DLit(LitInt32 i)) > let s = {s with cse = cse :: s.cse; seq = > ResizeArray()} > let r = type_apply s (apply s (on_succ, DSymbol > k)) v |> dyn false s > let r_ty = data_to_ty s r > if on_fail_ty <> r_ty then raise_type_error s <| > sprintf "Return type of the success case does not match the failure one.\nGot: > %s\nExpected: %s" (show_ty r_ty) (show_ty on_fail_ty) > seq_apply s r > ) h.tag_cases > push_typedop_no_rewrite s > (TyIntSwitch(tyv,on_succ,on_fail)) on_fail_ty > | DLit(LitInt32 i) -> lit i > | a -> raise_type_error s <| sprintf "Expected an i32.\nGot: %s" > (show_data a) > | _ -> raise_type_error s <| sprintf "Expected an union type.\nGot: > %s" (show_ty t) > | ELet(r,i,a,b) -> let s = add_trace s r in store_term s i (term s a); > term s b > | EPairTest(r,bind,p1,p2,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DPair(a,b) -> store_term s p1 a; store_term s p2 b; term s on_succ > | _ -> term s on_fail > | EExistsTest(r,bind,pat_type,pat,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DExists(a,b) -> Array.iter2 (store_ty s) pat_type a; store_term s > pat b; term s on_succ > | DV(L(_,YExists)) -> raise_type_error s "Runtime existentials > cannot be destructured. They are a compile time feature only." > | _ -> term s on_fail > | ESymbolTest(r,a,bind,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DSymbol a' when a = a' -> term s on_succ > | _ -> term s on_fail > | ERecordTest(r,a,bind,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DRecord l -> > let rec loop = function > | x :: x' -> > let sym a b = > match l |> Map.tryPick (fun (_, k) v -> if k = a > then Some v else None) with > | Some a -> store_term s b a; loop x' > | None -> term s on_fail > match x with > | Symbol((_,a),b) -> sym a b > | Var((r,a),b) -> > match term s a with > | DSymbol a -> sym a b > | a -> raise_type_error (add_trace s r) <| sprintf > "Expected a symbol.\nGot: %s" (show_data a) > | [[]] -> term s on_succ > loop a > | _ -> term s on_fail > | EAnnotTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in if > data_to_ty s (v s bind) = ty s a then term s on_succ else term s on_fail > | EUnitTest(r,bind,on_succ,on_fail) -> let s = add_trace s r in match v > s bind with DB -> term s on_succ | _ -> term s on_fail > | ENominalTest(r,a,bind,p1,on_succ,on_fail) -> > let s = add_trace s r > match ty s a with > | YNominal a -> > match v s bind with > | DNominal((DUnion _ | DV(L(_,YUnion _))),_) -> raise_type_error > s "Got an union in a nominal pattern." > | DNominal(v,b) -> > let rec loop = function > | YNominal b -> if a = b then store_term s p1 v; term s > on_succ else term s on_fail > | YApply(a,_) -> loop a > | _ -> raise_type_error s <| sprintf "Compiler error: > Expected a deferred type apply or a nominal.\nGot: %s" (show_ty b) > loop b > | _ -> term s on_fail > | a -> raise_type_error s <| sprintf "Expected a nominal on the left > side of the pattern.\nGot: %s" (show_ty a) > | ELitTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in > lit_test s a bind on_succ on_fail > | EDefaultLitTest(r,a,b,bind,on_succ,on_fail) -> let s = add_trace s r > in lit_test s (default_lit s a (ty s b)) bind on_succ on_fail > | ETypecase(r,a,b) -> > let s = add_trace s r > let a = ty s a > let rec loop = function > | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(term s > b) else loop rest > | [[]] -> None > match loop b with > | Some r -> r > | None -> raise_type_error s <| sprintf "Typecase miss.\nGot: %s" > (show_ty a) > | EOp(_,ToFunPtr,[[a]]) -> > match term s a with > | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> > DFunction(body,Some(TFun(domain,range,FT_Pointer)),a,b,c,d) > | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a > runtime function to a closure. The closure conversion should be done on a > compile time funciton." > | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s" > (show_data a) > | EOp(_,ToFunClosure,[[a]]) -> > match term s a with > | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> > DFunction(body,Some(TFun(domain,range,FT_Closure)),a,b,c,d) > | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a > runtime function to a function pointer. The pointer conversion should be done on > a compile time funciton." > | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s" > (show_data a) > | EOp(_,PragmaUnrollPush,[[a]]) -> > match term s a with > | DLit (LitInt32 _) as x -> push_op_no_rewrite s PragmaUnrollPush x > YB > | a -> raise_type_error s <| sprintf "Expected an i32 literal.\nGot: > %s" (show_data a) > | EOp(_,PragmaUnrollPop,[[]]) -> > push_op_no_rewrite' s PragmaUnrollPop [[]] YB > | EOp(_,BackendSwitch,l) -> > let mutable t = None > let mutable d = None > let validate_type t' = > match t with > | Some t -> if t <> t' then raise_type_error s $"The backend > switch needs to have the same type for all of its branches.\nGot: {show_ty > t'}\nExpected: {show_ty t}" > | None -> t <- Some t' > l |> List.iter (function > | EPair(_,ELit(_,LitString backend),b) -> > // The reason why we're evaling all the branches intead of > just one and in this specific order is because otherwise > // compile time hashmaps could make type inference unsound. > if backend = s.backend.node then > let d' = term s b > validate_type (data_to_ty s d') > d <- Some d' > else > let _,t' = term_scope s b > validate_type t' > | _ -> raise_type_error s "BackendSwitch should be a list of > (string literal,body) pairs." > ) > match d with > | Some cur -> cur |> dyn true s > | None -> raise_type_error s $"Cannot find the backend > {s.backend.node} in the backend switch op." > | EOp(_,UsesOriginalTermVars,[[a;b]]) -> > let a = term s a |> data_term_vars' > let b = term s b |> data_term_vars' > let c = a.Length = b.Length && > HashSet(a,HashIdentity.Reference).SetEquals(b) > DLit(LitBool c) > | EOp(_,UsesOriginalNominals,[[a;b]]) -> > let a = term s a |> data_nominals > let b = term s b |> data_nominals > let c = a.Length = b.Length && > HashSet(a,HashIdentity.Reference).SetEquals(b) > DLit(LitBool c) > | EOp(_,While,[[cond;body]]) -> > match term_scope s cond with > | [[|TyLocalReturnOp(_,TyJoinPoint cond,_)|]], ty -> > match ty with > | YPrim BoolT -> > match term_scope s body with > | body, YB & ty -> push_typedop s (TyWhile(cond,body)) ty > | _, ty -> raise_type_error s <| sprintf "The body of the > while loop must be of type unit.\nGot: %s" (show_ty ty) > | _ -> raise_type_error s <| sprintf "The conditional of the > while loop must be of type bool.\nGot: %s" (show_ty ty) > | _ -> raise_type_error s "The body of the conditional of the while > loop must be a solitary join point." > | EOp(_,Do,[[body]]) -> > match term_scope s body with > | body, YB & ty -> push_typedop s (TyDo body) ty > | _, ty -> raise_type_error s <| sprintf "The body of the do binding > must be of type unit.\nGot: %s" (show_ty ty) > | EOp(_,Indent,[[body]]) -> > let body, ty = term_scope s body > push_typedop s (TyIndent body) ty > | EOp(_,(LayoutToHeap | LayoutToHeapMutable | LayoutToStackMutable as > op),[[a]]) -> > let x = dyn false s (term s a) > let ty = data_to_ty s x > let layout = > match op with > | LayoutToHeap -> Heap > | LayoutToHeapMutable -> HeapMutable > | LayoutToStackMutable -> StackMutable > | _ -> raise_type_error s "Compiler error: Forgot a case in > LayoutTo." > let ret_ty = YLayout(ty,layout) > let key = TyToLayout(x,ret_ty) > push_typedop_no_rewrite s key ret_ty > | EOp(_,LayoutIndex,[[a]]) -> > match term s a with > | DV(L(i,YLayout(ty,layout)) as tyv) as a -> > match layout with > | StackMutable | HeapMutable -> push_typedop_no_rewrite s > (TyLayoutIndexAll tyv) ty > | Heap -> > match ty with > | YRecord l -> DRecord(Map.map (fun (_,b) ty -> push_typedop > s (TyLayoutIndexByKey(tyv,b)) ty) l) > | _ -> push_typedop s (TyLayoutIndexAll tyv) ty > | a -> raise_type_error s <| sprintf "Expected a layout type.\nGot: > %s" (show_data a) > | EOp(_,TypeToVar,[[EType(_,a)]]) -> push_typedop_no_rewrite s > (TyOp(TypeToVar,[[]])) (ty s a) > | EOp(_,LitToTypeLit,[[a]]) -> > match term s a with > | DLit x -> DTLit x > | DSymbol x -> DSymbol x > | a -> raise_type_error s <| sprintf "Expected a symbol or a type > literal.\nGot: %s" (show_data a) > | EOp(_,LitToSymbol,[[a]]) -> > match term s a with > | DLit x -> > match x with > | LitInt8 a -> a.ToString("R") |> DSymbol > | LitInt16 a -> a.ToString("R") |> DSymbol > | LitInt32 a -> a.ToString("R") |> DSymbol > | LitInt64 a -> a.ToString("R") |> DSymbol > | LitUInt8 a -> a.ToString("R") |> DSymbol > | LitUInt16 a -> a.ToString("R") |> DSymbol > | LitUInt32 a -> a.ToString("R") |> DSymbol > | LitUInt64 a -> a.ToString("R") |> DSymbol > | LitFloat32 a -> a.ToString("R") |> DSymbol > | LitFloat64 a -> a.ToString("R") |> DSymbol > | LitBool a -> a.ToString() |> DSymbol > | LitChar a -> a.ToString() |> DSymbol > | LitString a -> a.ToString() |> DSymbol > | a -> raise_type_error s <| sprintf "Expected a symbol or a type > literal.\nGot: %s" (show_data a) > | EOp(_,StringLitToSymbol,[[a]]) -> > match term s a with > | DLit(LitString a) -> DSymbol a > | a -> raise_type_error s <| sprintf "Expected a string > literal.\nGot: %s" (show_data a) > | EOp(_,SymbolToString,[[a]]) -> > match term s a with > | DSymbol a -> DLit (LitString a) > | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" > (show_data a) > | EOp(_,TypeToSymbol,[[EType(_,a)]]) -> > match ty s a with > | YSymbol a -> DSymbol a > | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" > (show_ty a) > | EOp(_,TypeLitToLit,[[EType(_,a)]]) -> > let rec loop = function > | YLit a -> DLit a > | YSymbol a -> DSymbol a > | YNominal _ | YApply _ as a -> loop (nominal_type_apply s a) > | a -> raise_type_error s <| sprintf "Expected a type literal or > a symbol.\nGot: %s" (show_ty a) > loop (ty s a) > | EOp(_,(TypeToVar | TypeToSymbol),[[a]]) -> raise_type_error s > "Expected a type." > | EOp(_,Dyn,[[a]]) -> term s a |> dyn true s > | EOp(_,StringLength,[[EType(_,t);a]]) -> > let t = ty s t > if is_any_int t = false then raise_type_error s <| sprintf "Expected > an int.\nGot: %s" (show_ty t) > match term s a with > | DLit(LitString str) -> > match t with > | YPrim Int8T -> try DLit (LitInt8 (System.Convert.ToSByte > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i8 failed as the string length is either too large.\nGot: > %i" str.Length > | YPrim Int16T -> try DLit (LitInt16 (System.Convert.ToInt16 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i16 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim Int32T -> try DLit (LitInt32 (System.Convert.ToInt32 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i32 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim Int64T -> try DLit (LitInt64 (System.Convert.ToInt64 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i64 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt8T -> try DLit (LitUInt8 (System.Convert.ToByte > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u8 failed as the string length is either too large.\nGot: > %i" str.Length > | YPrim UInt16T -> try DLit (LitUInt16 (System.Convert.ToUInt16 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u16 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt32T -> try DLit (LitUInt32 (System.Convert.ToUInt32 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u32 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt64T -> try DLit (LitUInt64 (System.Convert.ToUInt64 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u64 failed as the string length is either too > large.\nGot: %i" str.Length > | _ -> failwith "impossible" > | DV(L(_,YPrim StringT)) & str -> push_typedop s > (TyStringLength(t,str)) t > | x -> raise_type_error s <| sprintf "Expected a string.\nGot: %s" > (show_data x) > | EOp(_,StringIndex,[[a;b]]) -> > match term2 s a b with > | DLit(LitString a), DLit b -> > let b = to_i32 b > if 0 <= b && b < a.Length then a.[[int b]] |> LitChar |> DLit > else raise_type_error s <| sprintf "Cannot index into a string > of length %i at index %i." a.Length b > | a,b -> > match data_to_ty s a, data_to_ty s b with > | YPrim StringT,bt when is_any_int bt -> push_binop s > StringIndex (a,b) (YPrim CharT) > | a,b -> raise_type_error s <| sprintf "Expected a string and an > int as arguments.\nGot: %s\nAnd: %s" (show_ty a) (show_ty b) > | EOp(_,StringSlice,[[a;b;c]]) -> > match term3 s a b c with > | DLit(LitString a), DLit b, DLit c -> > let b,c = to_i32 b, to_i32 c > if 0 <= b && b <= c && c < a.Length then a.[[int b..int c]] |> > LitString |> DLit > else raise_type_error s <| sprintf "String of length %i's slice > from %i to %i is invalid." a.Length b c > | a,b,c -> > match data_to_ty s a, data_to_ty s b, data_to_ty s c with > | YPrim StringT, bt, ct when is_any_int bt && is_any_int ct -> > push_triop s StringSlice (a,b,c) (YPrim StringT) > | a,b,c -> raise_type_error s <| sprintf "Expected a string and > two ints as arguments.\nGot: %s\nAnd: %s\nAnd: %s" (show_ty a) (show_ty b) > (show_ty c) > | EArray(_,a,b) -> > match ty s b with > | YArray el as b -> > let a = > List.map (fun x -> > let x = term s x |> dyn false s > let x_ty = data_to_ty s x > if x_ty = el then x > else raise_type_error s $"All the elements in the array > literal have to be the type {show_ty el}.\nGot: {show_ty x_ty}" > ) a > push_typedop_no_rewrite s (TyArrayLiteral(el,a)) b > | b -> raise_type_error s $"Expected an array_base.\nGot: {show_ty > b}" > | EOp(_,ArrayCreate,[[EType(_,a);b]]) -> > let a,b = ty s a, term s b > match data_to_ty s b with > | bt when is_any_int bt -> push_typedop_no_rewrite s > (TyArrayCreate(a,b)) (YArray a) > | b -> raise_type_error s <| sprintf "Expected an int as the size of > the array.\nGot: %s" (show_ty b) > | EOp(_,ArrayLength,[[EType(_,t);a]]) -> > let t = ty s t > if is_any_int t = false then raise_type_error s <| sprintf "Expected > an int.\nGot: %s" (show_ty t) > let a = term s a > match data_to_ty s a with > | YArray _ -> push_typedop s (TyArrayLength(t,a)) t > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_ty a) > | EOp(_,ArrayIndex,[[a;b]]) -> > match term s a with > | DV(L(_,YArray ty)) & a -> > let b = term s b > match data_to_ty s b with > | bt when is_any_int bt -> push_binop_no_rewrite s ArrayIndex > (a,b) ty > | b -> raise_type_error s <| sprintf "Expected an int as the > index argumet.\nGot: %s" (show_ty b) > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_data a) > | EOp(_,ArrayIndexSet,[[a;b;c]]) -> > match term s a with > | DV(L(_,YArray ty)) & a -> > let b = term s b > match data_to_ty s b with > | bt when is_any_int bt -> > let c = term s c |> dyn false s > let ty' = data_to_ty s c > if ty' = ty then push_triop_no_rewrite s ArrayIndexSet > (a,b,c) YB > else raise_type_error s <| sprintf "The array and the value > being set do not have the same type.\nGot: %s\nExpected: %s" (show_ty ty') > (show_ty ty) > | b -> raise_type_error s <| sprintf "Expected an int as the > index argumet.\nGot: %s" (show_ty b) > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_data a) > | EOp(_,RecordMap,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> Map.map (fun (_i, k) v -> apply s (a, record2 > ((l.Count, "key"), DSymbol k) (((l.Count + 1), "value"), v))) l |> DRecord > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordIter,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> > Map.iter (fun (i,k) v -> > match apply s (a, record2 ((l.Count, "key"), DSymbol k) > (((l.Count + 1), "value"), v)) with > | DB -> () > | x -> raise_type_error s <| sprintf "Expected an unit > value.\nGot: %s" (show_data x) > ) l > DB > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordFilter,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> > Map.filter (fun (_i,k) v -> > match apply s (a, record2 ((l.Count, "key"), DSymbol k) > (((l.Count + 1), "value"), v)) with > | DLit(LitBool x) -> x > | x -> raise_type_error s <| sprintf "Expected a bool > literal.\nGot: %s" (show_data x) > ) l > |> DRecord > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordFold,[[a;b;c]]) -> > match term3 s a b c with > | a, state, DRecord l -> Map.fold (fun state (i,k) v -> apply s (a, > record3 ((l.Count, "state"), state) (((l.Count + 1), "key"), DSymbol k) > (((l.Count + 2), "value"), v))) state l > | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data r) > | EOp(_,RecordFoldBack,[[a;b;c]]) -> > match term3 s a b c with > | a, state, DRecord l -> Map.foldBack (fun (i,k) v state -> apply s > (a, record3 ((i, "state"), state) (((l.Count + 1), "key"), DSymbol k) (((l.Count > + 2), "value"), v))) l state > | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data r) > | EOp(_,RecordLength,[[a]]) -> > match term s a with > | DRecord l -> Map.count l |> LitInt32 |> DLit > | r -> raise_type_error s <| sprintf "Expected a record.\nGot: %s" > (show_data r) > | EOp(_,RecordTypeMap,[[a;EType(_,b)]]) -> > let a,l = term s a, ty_record s b > Map.map (fun (_i,k) v -> type_apply s (apply s (a, DSymbol k)) v) l > |> DRecord > | EOp(_,RecordTypeIter,[[a;EType(_,b)]]) -> > let a,l = term s a, ty_record s b > Map.iter (fun (_i, k) v -> > match type_apply s (apply s (a, DSymbol k)) v with > | DB -> () > | x -> raise_type_error s <| sprintf "Expected an unit > value.\nGot: %s" (show_data x) > ) l > DB > | EOp(_,RecordTypeFold,[[f;state;EType(_,x)]]) -> > let f,state,l = term s f, term s state, ty_record s x > Map.fold (fun state (_, k) v -> type_apply s (apply s ((apply s (f, > state), DSymbol k))) v) state l > | EOp(_,RecordTypeFoldBack,[[f;state;EType(_,x)]]) -> > let f,state,l = term s f, term s state, ty_record s x > Map.foldBack (fun (_, k) v state -> apply s ((type_apply s (apply s > (f, DSymbol k)) v), state)) l state > | EOp(_,RecordTypeLength,[[EType(_,a)]]) -> > Map.count (ty_record s a) |> LitInt32 |> DLit > | EOp(_,RecordTypeTryFind,[[EType(_,a);k;on_succ;on_fail]]) -> > match ty_record s a, term s k with > | l, DSymbol k -> > match l |> Map.tryPick (fun (_, k') v -> if k' = k then Some v > else None) with > | Some v -> type_apply s (term s on_succ) v > | None -> apply s (term s on_fail, DB) > | _, k -> raise_type_error s <| sprintf "Expected a symbol.\nGot: > %s" (show_data k) > | EOp(_,UnionToRecord,[[EType(_,a);on_succ]]) -> > type_apply s (term s on_succ) (YRecord (ty_union s a).Item.cases) > | EOp(_,Add,[[a;b]]) -> > let inline op a b = a + b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero a then b > elif is_lit_zero b then a > elif is_numeric a_ty then push_binop s Add (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Sub,[[a;b]]) -> > let inline op a b = a - b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero a && is_signed_numeric a_ty then push_op s > Neg b b_ty > elif is_lit_zero b then a > elif is_any_int a_ty && a = b then DLit(lit_zero a_ty) > elif is_numeric a_ty then push_binop s Sub (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Mult,[[a;b]]) -> > let inline op a b = a * b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_int_lit_zero a || is_int_lit_zero b then lit_zero a_ty > |> DLit > elif is_lit_one a then b > elif is_lit_one b then a > elif is_numeric a_ty then push_binop s Mult (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Div,[[a;b]]) -> > let inline op a b = a / b > try > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals > must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit > b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero b then raise > (System.DivideByZeroException()) > elif is_lit_one b then a > elif is_numeric a_ty then push_binop s Div (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to > have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > with :? System.DivideByZeroException -> > raise_type_error s <| sprintf "An attempt to divide by zero has > been detected at compile time." > | EOp(_,Pow,[[a;b]]) -> > let inline op a b = a ** b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both float and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty && is_float a_ty then push_binop s Pow (a,b) a_ty > else raise_type_error s <| sprintf "The two sides need to have > the same float types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Mod,[[a;b]]) -> > let inline op a b = a % b > try > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals > must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit > b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero b then raise > (System.DivideByZeroException()) > elif is_numeric a_ty then push_binop s Mod (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to > have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > with :? System.DivideByZeroException -> > raise_type_error s <| sprintf "An attempt to divide by zero has > been detected at compile time." > | EOp(_,LT,[[a;b]]) -> > let inline op a b = a < b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s LT (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,LTE,[[a;b]]) -> > let inline op a b = a <= b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s LTE (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,GT,[[a;b]]) -> > let inline op a b = a > b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s GT (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,GTE,[[a;b]]) -> > let inline op a b = a >= b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s GTE (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,EQ,[[a;b]]) -> eq s (term s a) (term s b) > | EOp(_,NEQ,[[a;b]]) -> > let inline op a b = a <> b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive > a_ty -> LitBool false |> DLit > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > match a, b with > | DLit (LitBool false), x | x, DLit (LitBool false) -> x > | _ -> > if is_primitive a_ty then push_binop s NEQ (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseAnd,[[a;b]]) -> > let inline op a b = a &&& b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseAnd (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseOr,[[a;b]]) -> > let inline op a b = a ||| b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseOr (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseXor,[[a;b]]) -> > let inline op a b = a ^^^ b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseXor (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseComplement,[[a]]) -> > let inline op a = ~~~a > match term s a with > | DLit a -> > match a with > | LitInt8 a -> op a |> LitInt8 |> DLit > | LitInt16 a -> op a |> LitInt16 |> DLit > | LitInt32 a -> op a |> LitInt32 |> DLit > | LitInt64 a -> op a |> LitInt64 |> DLit > | LitUInt8 a -> op a |> LitUInt8 |> DLit > | LitUInt16 a -> op a |> LitUInt16 |> DLit > | LitUInt32 a -> op a |> LitUInt32 |> DLit > | LitUInt64 a -> op a |> LitUInt64 |> DLit > | a -> raise_type_error s <| sprintf "The literal must be an > int.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_any_int a_ty then push_op s BitwiseComplement a a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > | EOp(_,ShiftLeft,[[a;b]]) -> > let inline op a b = a <<< b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The first literal must > be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit > a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftLeft > (a,b) a_ty > else raise_type_error s <| sprintf "The type of the first > argument must be an int and the second must be a 32-bit signed int.\nGot: %s and > %s" (show_ty a_ty) (show_ty b_ty) > | EOp(_,ShiftRight,[[a;b]]) -> > let inline op a b = a >>> b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The first literal must > be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit > a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftRight > (a,b) a_ty > else raise_type_error s <| sprintf "The type of the first > argument must be an int and the second must be a 32-bit signed int.\nGot: %s and > %s" (show_ty a_ty) (show_ty b_ty) > | EOp(_,Neg,[[a]]) -> > let inline op a = -a > match term s a with > | DLit a -> > match a with > | LitInt8 a -> op a |> LitInt8 |> DLit > | LitInt16 a -> op a |> LitInt16 |> DLit > | LitInt32 a -> op a |> LitInt32 |> DLit > | LitInt64 a -> op a |> LitInt64 |> DLit > | LitFloat32 a -> op a |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > signed numeric type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_signed_numeric a_ty then push_op s Neg a a_ty > else raise_type_error s <| sprintf "The argument must be a > signed numeric type.\nGot: %s" (show_ty a_ty) > | EOp(_,Tanh,[[a]]) -> > let inline op a = tanh a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Tanh a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Log,[[a]]) -> > let inline op a = log a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Log a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Exp,[[a]]) -> > let inline op a = exp a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Exp a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Sqrt,[[a]]) -> > let inline op a = sqrt a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Sqrt a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Sin,[[a]]) -> > let inline op a = sin a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Sin a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Cos,[[a]]) -> > let inline op a = cos a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Cos a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Conv,[[EType(_,typ);a]]) -> > let typ = ty s typ > let a = term s a > let at = data_to_ty s a > if typ = at then a > else > let inline conv_lit x = > match typ with > | YPrim Int8T -> int8 x |> LitInt8 > | YPrim Int16T -> int16 x |> LitInt16 > | YPrim Int32T -> int32 x |> LitInt32 > | YPrim Int64T -> int64 x |> LitInt64 > | YPrim UInt8T -> uint8 x |> LitUInt8 > | YPrim UInt16T -> uint16 x |> LitUInt16 > | YPrim UInt32T -> uint32 x |> LitUInt32 > | YPrim UInt64T -> uint64 x |> LitUInt64 > | YPrim Float32T -> float32 x |> LitFloat32 > | YPrim Float64T -> float x |> LitFloat64 > | _ -> raise_type_error s <| sprintf "Cannot convert the > literal to the following type: %s" (show_ty typ) > |> DLit > match a with > | DLit (LitInt8 a) -> conv_lit a > | DLit (LitInt16 a) -> conv_lit a > | DLit (LitInt32 a) -> conv_lit a > | DLit (LitInt64 a) -> conv_lit a > | DLit (LitUInt8 a) -> conv_lit a > | DLit (LitUInt16 a) -> conv_lit a > | DLit (LitUInt32 a) -> conv_lit a > | DLit (LitUInt64 a) -> conv_lit a > | DLit (LitFloat32 a) -> conv_lit a > | DLit (LitFloat64 a) -> conv_lit a > | _ -> > let is_convertible_primt x = > match x with > | YPrim BoolT | YPrim CharT | YPrim StringT -> false > | YPrim _ -> true > | _ -> false > if is_convertible_primt at && is_convertible_primt typ then > push_typedop s (TyConv(typ,a)) typ > else raise_type_error s <| sprintf "Cannot convert %s to the > following type: %s" (show_data a) (show_ty typ) > | EOp(_,NanIs,[[a]]) -> > let a = term s a > match data_to_ty s a with > | YPrim (Float32T | Float64T) -> push_op s NanIs a (YPrim BoolT) > | a -> raise_type_error s <| sprintf "Expected a float in NanIs. > Got: %s" (show_ty a) > | EOp(_,Infinity,[[EType(_,a)]]) -> > match ty s a with > | YPrim Float32T -> DLit (LitFloat32 infinityf) > | YPrim Float64T -> DLit (LitFloat64 infinity) > | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a) > | EOp(_,Pi,[[EType(_,a)]]) -> > match ty s a with > | YPrim Float32T -> DLit (LitFloat32 System.Single.Pi) > | YPrim Float64T -> DLit (LitFloat64 System.Double.Pi) > | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a) > | EOp(_,LitIs,[[a]]) -> > match term s a with > | DLit _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,PrimIs,[[a]]) -> > match term s a |> data_to_ty s with > | YPrim _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,SymbolIs,[[a]]) -> > match term s a with > | DSymbol _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,VarIs,[[a]]) -> > match term s a with > | DNominal(DV _, _) | DV _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,UnionIs,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> DLit > (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,HeapUnionIs,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion x)), _) | DNominal(DUnion(_,x), _) -> > match x.Item.layout with UHeap -> true | UStack -> false > |> LitBool |> DLit > | _ -> DLit (LitBool false) > | EOp(_,LayoutIs,[[a]]) -> > match term s a with > | DV(L(_,YLayout _)) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalIs,[[a]]) -> > match term s a with > | DNominal(_, _) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,FunctionIs,[[a]]) -> > match term s a with > | DFunction _ | DV(L(_,YFun _)) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,ExistsIs,[[a]]) -> > match term s a with > | DExists _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,PrimTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YPrim _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,SymbolTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YSymbol _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,UnionTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> > match nominal_type_apply s a with > | YUnion _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | _ -> DLit (LitBool false) > | EOp(_,HeapUnionTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> > match nominal_type_apply s a with > | YUnion x -> DLit (LitBool (match x.Item.layout with UHeap -> > true | UStack -> false)) > | _ -> DLit (LitBool false) > | _ -> DLit (LitBool false) > | EOp(_,LayoutTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YLayout _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,ExistsTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YExists -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalStrip,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> > raise_type_error s "Cannot strip the nominal wrapper from an union." > | DNominal(a,_) -> a > | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: %s" > (show_data a) > | EOp(_,NominalTypeApply,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> DExists([[|nominal_type_apply s > a|]], DB) > | a -> raise_type_error s <| sprintf "Expected a nominal type.\nGot: > %s" (show_ty a) > | EOp(_,ExistsStrip,[[a]]) -> > match term s a with > | DExists(_,a) -> a > | a -> raise_type_error s <| sprintf "Expected an existential.\nGot: > %s" (show_data a) > | EOp(_,PrototypeHas,[[prot; EType(_,a)]]) -> > let body (x : Nominal) = > let prot_er () = raise_type_error s "Expected a forall or a > prototype apply." > let rec loop = function > | EForall'(_,_,_,x) -> loop x > | EPrototypeApply(_,prot_id,_) -> > env.prototypes_instances.ContainsKey(prot_id,x.node.id) |> LitBool |> DLit > | _ -> prot_er() > match term s prot with > | DForall(body,_,_,_,_) -> loop body > | _ -> prot_er() > let rec loop = function > | YNominal x -> body x > | YApply(l,_) -> loop l > | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: > %s" (show_ty a) > loop (ty s a) > | EOp(_,TypeEq,[[EType(_,a);EType(_,b)]]) -> DLit(LitBool(ty s a = ty s > b)) > | EOp(_,FailWith,[[EType(_,typ);a]]) -> > match ty s typ, term s a with > | typ, (DV(L(_,YPrim StringT)) | DLit(LitString _)) & a -> > push_typedop_no_rewrite s (TyFailwith(typ,a)) typ > | _,a -> raise_type_error s "Expected a string as input to > failwith.\nGot: %s" (show_data a) > | EOp(_,FailWith,_) -> raise_type_error s "Malformed FailWith" > | EOp(_,ErrorType,[[a]]) -> term s a |> show_data |> raise_type_error s > | EOp(_,PrintStatic,[[EType(_,a)]]) -> printfn "%s" (ty s a |> show_ty); > DB > | EOp(_,PrintStatic,[[a]]) -> printfn "%s" (term s a |> show_data); DB > | EOp(_,PrintRaw,[[a]]) -> printfn "%A" > (Printable.eval(Choice1Of2(a,id))); DB > | EOp(_,UnionTag,[[a]]) -> > let eval k (h : Union) = h.Item.tags.[[k]] |> LitInt32 |> DLit > match term s a with > | DNominal(DV(L(_,YUnion h) & v) & a, _) -> > match Map.tryFind v s.unions with > | Some (UnionData (k,_)) -> eval k h > | _ -> push_op s UnionTag a (YPrim Int32T) > | DNominal(DUnion(DPair(DSymbol k,_),h), _) -> eval k h > | a -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" > (show_data a) > | EOp(_,Global & op,[[a]]) -> > match term s a with > | DLit (LitString text) & a -> > // if text.Contains "import " || text.Contains "Fable" then > // let s = { s with trace = [[]]; seq = ResizeArray() } > // let l = s.cse |> List.map _.Count |> List.filter ((=) 0) > |> List.length > // Console.WriteLine ($"global / text: {text} / s: %A{s} / > l: {l}") > if s.i.contents < 2 && s.cse |> List.map _.Count |> List.filter > ((=) 0) |> List.length = 2 > then global' text > push_op_no_rewrite s op a YB > | a -> raise_type_error s $"Expected a string literal.\nGot: > {show_data a}" > | EOp(_,ToPythonRecord,[[a]]) -> > match term s a |> dyn false s with > | DRecord _ & a -> push_op_no_rewrite s ToPythonRecord a (YMacro > [[Text "object"]]) > | a -> raise_type_error s $"Expected a record.\nGot: {show_data a}" > | EOp(_,ToPythonNamedTuple,[[n;a]]) -> > match term s n, term s a |> dyn false s with > | (DLit (LitString _) | DV(L(_,YPrim StringT))) & n, DRecord _ & a > -> push_binop_no_rewrite s ToPythonNamedTuple (n,a) (YMacro [[Text "object"]]) > | n, a -> raise_type_error s $"Expected a pair of string and > record.\nGot: {show_data n}\nAnd: {show_data a}" > | EOp(_,VarTag,[[a]]) -> > match term s a with > | DNominal(DV(L(i,_)), _) | DV(L(i,_)) -> DLit (LitInt32 i) > | a -> raise_type_error s $"Expected a runtime variable.\nGot: > {show_data a}" > | EOp(_,TagToSymbol,[[a]]) -> > match term s a with > | DLit (LitInt32 i) -> DSymbol (string i) > | a -> raise_type_error s $"Expected an i32 literal.\nGot: > {show_data a}" > | EOp(_,FunctionTermSlotsGet,[[a]]) -> > match term s a with > | DFunction(_,_,free_vars,_,_,_) -> Array.foldBack (fun x s -> > DPair(x,s)) free_vars DB > | DV(L(_,YFun _)) -> raise_type_error s $"Expected a compile time > function. Got a runtime one." > | a -> raise_type_error s $"Expected a compile time function.\nGot: > {show_data a}" > | EOp(_,FunctionTermSlotsSet,[[a;b]]) -> > match term s a, term s b with > | DFunction(q1,q2,free_vars,q4,q5,a6), b -> > let mutable b = b > let free_vars = > Array.init free_vars.Length (fun _ -> > match b with > | DPair(q,w) -> b <- w; q > | DB -> raise_type_error s "Unexpected end of the tuple > to be set." > | _ -> raise_type_error s $"Expected a pair.\nGot: > {show_data b}" > ) > match b with > | DB -> DFunction(q1,q2,free_vars,q4,q5,a6) > | _ -> raise_type_error s $"Expected an unit end of the > tuple.\nGot: {show_data b}" > | DV(L(_,YFun _)), _ -> raise_type_error s $"Expected a compile time > function. Got a runtime one." > | a, _ -> raise_type_error s $"Expected a compile time > function.\nGot: {show_data a}" > | EOp(_,SizeOf,[[EType(_,a)]]) -> > match ty s a with > | YB | YSymbol _ -> DLit (LitInt32 0) > | YPrim (Int8T | UInt8T | BoolT) -> DLit (LitInt32 1) > | YPrim (Int16T | UInt16T) -> DLit (LitInt32 2) > | YPrim (Int32T | UInt32T | Float32T) -> DLit (LitInt32 4) > | YPrim (Int64T | UInt64T | Float64T) -> DLit (LitInt32 8) > | a -> push_typedop s (TySizeOf a) (YPrim Int32T) > | EOp(_,FreeVars,[[a]]) -> > let x = term s a |> data_free_vars > Array.foldBack (fun x s -> DPair(DV x,s)) x (DRecord Map.empty) > | EOp(_,FreeVarsReplace,[[a;b]]) -> > let a = term s a > let b = term s b > let a_fv = a |> data_free_vars > let b_fv = b |> data_free_vars > if a_fv.Length <> b_fv.Length then raise_type_error s "The two > expressions need to have the same number of free variables." > let d = Dictionary(HashIdentity.Reference) > Array.iter2 (fun (L(_,ta) as a) (L(_,tb) as b) -> > if ta <> tb then raise_type_error s $"The free variables can > only be replaced with free vars of the same type.\nGot: {show_ty ta}\nExpected: > {show_ty tb}" > d.Add(a,b) > ) a_fv b_fv > data_free_vars_replace s d a > | EOp(_,HashSetCreate,[[]]) -> DHashSet(HashSet(HashIdentity.Reference)) > | EOp(_,HashSetAdd,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Add k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetContains,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Contains k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetRemove,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Remove k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetCount,[[h]]) -> > match term s h with > | DHashSet h -> DLit(LitInt32(h.Count)) > | h -> raise_type_error s $"Expected a compile time HashSet.\nGot: > {show_data h}" > | EOp(_,HashMapCreate,[[]]) -> > DHashMap(OrderedDictionary(HashIdentity.Reference), ref true) > | EOp(_,HashMapSetImmutable,[[h]]) -> > match term s h with > | DHashMap(_, is_writable) -> is_writable.Value <- false; DB > | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: > {show_data h}" > | EOp(_,HashMapSet,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v when is_writable.Value -> h.[[k]] > <- v; DB > | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been > made read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapAdd,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v when is_writable.Value -> if > h.TryAdd(k,v) then DB else raise_type_error s "The entry with the same key > already exists in the dictionary." > | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been > made read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapTryAdd,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v -> if is_writable.Value then > DLit(LitBool(h.TryAdd(k,v))) else raise_type_error s "The hash map has been made > read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapContains,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, _), k -> DLit(LitBool(h.ContainsKey k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapRemove,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, is_writable), k -> if is_writable.Value then > DLit(LitBool(h.Remove k)) else raise_type_error s "The hash map has been made > read-only and cannot be removed from." > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapCount,[[h]]) -> > match term s h with > | DHashMap(h, _) -> DLit(LitInt32(h.Count)) > | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: > {show_data h}" > | EOp(_,HashMapTryGet,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, _), k -> > match h.TryGetValue(k) with > | true, v -> v > | false, _ -> DSymbol "null" > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,StaticStringConcat,[[l]]) -> > let strb = System.Text.StringBuilder() > let rec loop = function > | DPair(a,b) -> loop a; loop b > | DLit(LitString x) -> strb.Append(x) |> ignore > | DB -> () > | x -> raise_type_error s $"Expected a compile time string or a > pair of them.\nGot: {show_data x}" > loop (term s l) > DLit(LitString(strb.ToString())) > | EOp(_,Printf,[[fmt;str]]) -> > let fmt,str = term2 s fmt str > match fmt with > | DLit(LitString _) -> push_binop_no_rewrite s Printf (fmt, str) YB > | _ -> raise_type_error s $"Expected a compile time string as the > format.\nGot: {show_data fmt}" > | EOp(_,op,a) -> raise_type_error s <| sprintf "Compiler error: %A with > %i args not implemented" op (List.length a) > > let s : LangEnv = { > trace = [[]] > seq = null > cse = [[]] > unions = Map.empty > i = ref 0 > env_global_type = [[||]] > env_global_term = [[||]] > env_stack_type = [[||]] > env_stack_term = [[||]] > backend = backend_strings.Add env.backend > globals = ResizeArray () > } > let ty_to_data x = ty_to_data {s with i = ref 0} x > let nominal_apply x = nominal_type_apply {s with i = ref 0} x > > match x with > | EFun'(r,_,_,_,_) -> term_scope s (EApply(r,x,EB r)), > {join_point_method=join_point_method; join_point_closure=join_point_closure; > ty_to_data=ty_to_data; nominal_apply=nominal_apply; globals=s.globals} > | EForall' _ -> raise_type_error s "The main function should not have a > forall." > | _ -> raise_type_error s "Expected a function as the main." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenUtils > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System.Text > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CodegenEnv = > { > text : System.Text.StringBuilder > indent : int > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### line > > ── fsharp ────────────────────────────────────────────────────────────────────── > let line x (s : string) = x.text.Append(' ', x.indent).AppendLine s |> ignore > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indent > > ── fsharp ────────────────────────────────────────────────────────────────────── > let indent x : CodegenEnv = {x with indent=x.indent+4} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_dec_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_dec_point (x : string) = if x.IndexOf('.') = -1 && x.Contains "E" |> not > then x + ".0" else x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenError > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception CodegenError of Range option * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenErrorWithPos > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception CodegenErrorWithPos of Trace * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error x = raise (CodegenError (None,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error_backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error_backend r x = raise (CodegenError (Some r,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error' trace (r,x) = raise (CodegenErrorWithPos(Option.fold > (fun s x -> x :: s) trace r,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenFsharp > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### backend_nameFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let backend_nameFsharp = "Fsharp" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### litFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let litFsharp = function > | LitInt8 x -> sprintf "%iy" x > | LitInt16 x -> sprintf "%is" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%iL" x > | LitUInt8 x -> sprintf "%iuy" x > | LitUInt16 x -> sprintf "%ius" x > | LitUInt32 x -> sprintf "%iu" x > | LitUInt64 x -> sprintf "%iUL" x > | LitFloat32 x -> > if x = infinityf then "infinityf" > elif x = -infinityf then "-infinityf" > elif System.Single.IsNaN x then "nanf" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "infinity" > elif x = -infinity then "-infinity" > elif System.Double.IsNaN x then "nan" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### primFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let primFsharp = function > | Int8T -> "int8" > | Int16T -> "int16" > | Int32T -> "int32" > | Int64T -> "int64" > | UInt8T -> "uint8" > | UInt16T -> "uint16" > | UInt32T -> "uint32" > | UInt64T -> "uint64" > | Float32T -> "float32" > | Float64T -> "float" > | BoolT -> "bool" > | StringT -> "string" > | CharT -> "char" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_litFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_litFsharp = function > | YLit x -> litFsharp x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in the > macro." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRecFsharp = {tag : int; free_vars : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LayoutRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LayoutRecFsharp = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MethodRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MethodRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClosureRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClosureRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : > TyV[[]]; range : Ty; body : TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### codegenFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let codegenFsharp (env : PartEvalResult) (x : TypedBind [[]]) = > let types = ResizeArray() > let functions = ResizeArray() > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecFsharp = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a > |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (3).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x > if dirty then print true show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Map<int * string,Ty>) : UnionRecFsharp = {free_vars=a |> > Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print false show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litFsharp a > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let rec tyv x = > match x with > | YUnion a -> > let a = a.Item > match a.layout with > | UHeap -> sprintf "UH%i" (uheap a.cases).tag > | UStack -> sprintf "US%i" (ustack a.cases).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The F# > backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameFsharp > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected a > record with the '{backend_nameFsharp}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a | > TypeLit a -> type_litFsharp a) |> String.concat "" > | YPrim a -> primFsharp a > | YArray a -> sprintf "(%s [[]])" (tup_ty a) > | YFun(a,b,FT_Vanilla) -> sprintf "(%s -> %s)" (tup_ty a) (tup_ty b) > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at runtime. > They are a compile time feature only." > | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: > %A{a}" > and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i : %s" i > (tup_ty t)) |> String.concat ", " > and binds (s : CodegenEnv) (x : TypedBind [[]]) = > Array.iter (function > | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e > -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError > as e -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> try line s (tup d) with :? > CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1) > ) x > and tup x = > match data_term_vars x with > | [[||]] -> "()" > | [[|x|]] -> show_w x > | x -> Array.map show_w x |> String.concat ", " |> sprintf "struct (%s)" > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> > tyv x) with > | [[||]] -> "unit" > | [[|x|]] -> x > | x -> String.concat " * " x |> sprintf "struct (%s)" > and op s d a = > let jp (a, b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args > | JPClosure(a,b) -> sprintf "closure%i(%s)" (closure (a,b)).tag args > let free_vars do_annot x = > let f (L(i,t)) = if do_annot then sprintf "v%i : %s" i (tyv t) else > sprintf "v%i" i > match data_free_vars x with > | [[||]] -> "()" > | [[|x|]] -> f x > | x -> Array.map f x |> String.concat ", " |> sprintf "struct (%s)" > let simple x = > match d with > | None -> x > | Some d -> match free_vars true d with "()" -> x | d -> sprintf > "let %s = %s" d x > |> line s > let complex f = > match d with > | None -> f s : unit > | Some d -> match free_vars true d with "()" -> f s | d -> line s > (sprintf "let %s =" d); f (indent s) > let layout_vars a = > let f i x = > match x with > | WV(L(i',_)) -> sprintf "l%i = v%i" i i' > | WLit x -> sprintf "l%i = %s" i (litFsharp x) > a |> data_term_vars |> Array.mapi f |> String.concat "; " > let layout_index i x = > x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i" i i') > |> String.concat ", " > |> function "" -> () | x -> simple x > let length (a,b) = > match a with > | YPrim UInt8T -> sprintf "System.Convert.ToByte %s.Length" (tup b) > | YPrim UInt16T -> sprintf "System.Convert.ToUInt16 %s.Length" (tup > b) > | YPrim UInt32T -> sprintf "System.Convert.ToUInt32 %s.Length" (tup > b) > | YPrim UInt64T -> sprintf "System.Convert.ToUInt64 %s.Length" (tup > b) > | YPrim Int8T -> sprintf "System.Convert.ToSByte %s.Length" (tup b) > | YPrim Int16T -> sprintf "System.Convert.ToInt16 %s.Length" (tup b) > | YPrim Int32T -> sprintf "%s.Length" (tup b) > | YPrim Int64T -> sprintf "System.Convert.ToInt64 %s.Length" (tup b) > | _ -> raise_codegen_error "Compiler error: Expected an int in > length" > |> simple > match a with > | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x > | CMType x -> tup_ty x | CMTypeLit x -> type_litFsharp x) |> String.concat "" |> > simple > | TySizeOf t -> simple $"sizeof<{tup_ty t}>" > | TyIf(cond,tr,fl) -> > complex <| fun s -> > line s (sprintf "if %s then" (tup cond)) > binds (indent s) tr > match fl with > | [[|TyLocalReturnData(DB,_)|]] -> () > | _ -> > line s "else" > binds (indent s) fl > | TyJoinPoint(a,args) -> simple (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The F# backend does > not support nesting other backends." > | TyWhile(a,b) -> > complex <| fun s -> > line s (sprintf "while %s do" (jp a)) > binds (indent s) b > | TyDo a -> > complex <| fun s -> > line s "do" > binds (indent s) a > | TyIndent a -> > complex <| fun s -> > binds (indent s) a > | TyIntSwitch(L(i,_),on_succ,on_fail) -> > complex <| fun s -> > line s (sprintf "match v%i with" i) > Array.iteri (fun i x -> > line s (sprintf "| %i ->" i) > binds (indent s) x > ) on_succ > line s "| _ ->" > binds (indent s) on_fail > | TyUnionUnbox(is,x,on_succs,on_fail) -> > complex <| fun s -> > let case_tags = x.Item.tags > line s (sprintf "match %s with" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let prefix = > let x = x.Item > match x.layout with > | UHeap -> sprintf "UH%i" (uheap x.cases).tag > | UStack -> sprintf "US%i" (ustack x.cases).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > match data_free_vars a with > | [[||]] -> "" > | x -> sprintf "(%s)" (args x) > |> sprintf "%s_%i%s" prefix i > ) > |> String.concat ", " > line s (sprintf "| %s -> (* %s *)" cases k) > binds (indent s) b > ) on_succs > on_fail |> Option.iter (fun b -> > line s "| _ ->" > binds (indent s) b > ) > | TyUnionBox(a,b,c) -> > let c = c.Item > let i = c.tags.[[a]] > let vars = > match data_term_vars b with > | [[||]] -> "" > | x -> Array.map show_w x |> String.concat ", " |> sprintf > "(%s)" > match c.layout with > | UHeap -> sprintf "UH%i_%i%s" (uheap c.cases).tag i vars > | UStack -> sprintf "US%i_%i%s" (ustack c.cases).tag i vars > |> simple > | TyToLayout(a,b) -> > let a = layout_vars a > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else > sprintf "{%s} : Heap%i" a (heap b).tag > | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag > else sprintf "{%s} : Mut%i" a (mut b).tag > | StackMutable -> raise_codegen_error "The F# backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (4).\nGot: %s{show_ty b}" > |> simple > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a record.") > (mut t).data b > Array.iter2 (fun (L(i',_)) b -> > line s (sprintf "v%i.l%i <- %s" i i' (show_w b)) > ) (data_free_vars a) (data_term_vars c) > | TyArrayLiteral(a,b) -> simple <| sprintf "[[|%s|]]" (List.map tup b |> > String.concat "; ") > | TyArrayCreate(a,b) -> > match b with > | DLit(LitInt32 _) | DV(L(_,YPrim Int32T)) -> simple (sprintf > "Array.zeroCreate<%s> (%s)" (tup_ty a) (tup b)) > | _ -> simple (sprintf "Array.zeroCreate<%s> > (System.Convert.ToInt32(%s))" (tup_ty a) (tup b)) > | TyArrayLength(a,b) -> length (a,b) > | TyStringLength(a,b) -> length (a,b) > | TyFailwith(a,b) -> simple (sprintf "failwith<%s> %s" (tup_ty a) (tup > b)) > | TyConv(a,b) -> > let b = tup b > match a with > | YPrim Int8T -> $"int8 {b}" > | YPrim Int16T -> $"int16 {b}" > | YPrim Int32T -> $"int32 {b}" > | YPrim Int64T -> $"int64 {b}" > | YPrim UInt8T -> $"uint8 {b}" > | YPrim UInt16T -> $"uint16 {b}" > | YPrim UInt32T -> $"uint32 {b}" > | YPrim UInt64T -> $"uint64 {b}" > | YPrim Float32T -> $"float32 {b}" > | YPrim Float64T -> $"float {b}" > | _ -> raise_codegen_error $"Compiler error: Unexpected type in > Conv. Got: {show_ty a}" > |> simple > | TyApply(L(i,_),b) -> sprintf "v%i %s" i (tup b) |> simple > | TyOp(Global, [[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup a > | TypeToVar, _ -> raise_codegen_error "The use of `` should never > appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | StringSlice, [[a;b;c]] -> sprintf "%s.[[int %s..int %s]]" (tup a) > (tup b) (tup c) > | ArrayIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | ArrayIndexSet, [[a;b;c]] -> sprintf "%s.[[int %s]] <- %s" (tup a) > (tup b) (tup c) > > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b) > | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b) > | EQ, [[a;b]] -> sprintf "%s = %s" (tup a) (tup b) > | NEQ, [[a;b]] -> sprintf "%s <> %s" (tup a) (tup b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b) > | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b) > | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b) > | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a) > > | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b) > | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b) > > | Neg, [[x]] -> sprintf " -%s" (tup x) > | Log, [[x]] -> sprintf "log %s" (tup x) > | Exp, [[x]] -> sprintf "exp %s" (tup x) > | Tanh, [[x]] -> sprintf "tanh %s" (tup x) > | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x) > | Sin, [[x]] -> sprintf "sin %s" (tup x) > | Cos, [[x]] -> sprintf "cos %s" (tup x) > | NanIs, [[x]] -> > match x with > | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf > "System.Single.IsNaN(%s)" (tup x) > | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf > "System.Double.IsNaN(%s)" (tup x) > | _ -> raise_codegen_error "Compiler error: Invalid type in > NanIs." > | UnionTag, [[DV(L(i,YUnion h))]] -> > let h = h.Item > let ty = > match h.layout with > | UHeap -> sprintf "UH%i" (uheap h.cases).tag > | UStack -> sprintf "US%i" (ustack h.cases).tag > let items = > h.cases > |> Seq.map (fun (KeyValue ((i, _), _)) -> > $"{ty}_{i}, {i}" > ) > |> String.concat "; " > $"[[ {items} ]] |> Map |> Map.find v{i}" > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i > args not supported" op l.Length > |> simple > and heap : _ -> LayoutRecFsharp = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat "; " > if b = "" then line s (sprintf "Heap%i() = class end" x.tag) > else line s (sprintf "Heap%i = {%s}" x.tag b) > ) > and mut : _ -> LayoutRecFsharp = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "mutable l%i : > %s" i (tyv t)) |> String.concat "; " > if b = "" then line s (sprintf "Mut%i() = class end" x.tag) > else line s (sprintf "Mut%i = {%s}" x.tag b) > ) > and uheap : _ -> UnionRecFsharp = union (fun s x -> > line s (sprintf "UH%i =" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "| UH%i_%i" x.tag i) > | a -> line (indent s) (sprintf "| UH%i_%i of %s" x.tag i (a |> > Array.map (fun (L(_,t)) -> tyv t) |> String.concat " * ")) > i <- i+1 > ) > ) > and ustack : _ -> UnionRecFsharp = union (fun s x -> > line s (sprintf "[[<Struct>]] US%i =" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "| US%i_%i" x.tag i) > | a -> line (indent s) (sprintf "| US%i_%i of %s" x.tag i (a |> > Array.mapi (fun i' (L(_,t)) -> sprintf "f%i_%i : %s" i i' (tyv t)) |> > String.concat " * ")) > i <- i+1 > ) > ) > and method : _ -> MethodRecFsharp = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; > range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method dictionary is > malformed" > ) (fun s x -> > line s (sprintf "method%i (%s) : %s =" x.tag (args_tys x.free_vars) > (tup_ty x.range)) > binds (indent s) x.body > ) > and closure : _ -> ClosureRecFsharp = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars > args; domain_args=data_free_vars domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not > supported in the F# backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in the > closure join point." > ) (fun s x -> > let domain = > match x.domain_args |> Array.map (fun (L(i,t)) -> sprintf "v%i : > %s" i (tyv t)) with > | [[||]] -> "()" > | [[|x|]] -> sprintf "(%s)" x > | x -> String.concat ", " x |> sprintf "struct (%s)" > line s (sprintf "closure%i (%s) %s : %s =" x.tag (args_tys > x.free_vars) domain (tup_ty x.range)) > binds (indent s) x.body > ) > > let main = System.Text.StringBuilder() > binds {text=main; indent=0} x > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> > ignore) > types |> Seq.iteri (fun i x -> program.Append(if i = 0 then "type " else > "and ").Append(x) |> ignore) > functions |> Seq.iteri (fun i x -> program.Append(if i = 0 then "let rec " > else "and ").Append(x) |> ignore) > program.Append(main).ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 2.74s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (328,81)-(328,84) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenGleam > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### backend_nameGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let backend_nameGleam = "Gleam" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### litGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let litGleam = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%i" x > | LitUInt8 x -> sprintf "%i" x > | LitUInt16 x -> sprintf "%i" x > | LitUInt32 x -> sprintf "%i" x > | LitUInt64 x -> sprintf "%i" x > | LitFloat32 x -> > if x = infinityf then "infinityf" > elif x = -infinityf then "-infinityf" > elif System.Single.IsNaN x then "nanf" > else x.ToString("R") |> add_dec_point |> sprintf "%s" > | LitFloat64 x -> > if x = infinity then "infinity" > elif x = -infinity then "-infinity" > elif System.Double.IsNaN x then "nan" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "\"%s\"" > | LitBool x -> if x then "True" else "False" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### primGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let primGleam = function > | Int8T -> "Int" > | Int16T -> "Int" > | Int32T -> "Int" > | Int64T -> "Int" > | UInt8T -> "Int" > | UInt16T -> "Int" > | UInt32T -> "Int" > | UInt64T -> "Int" > | Float32T -> "Float" > | Float64T -> "Float" > | BoolT -> "Bool" > | StringT -> "String" > | CharT -> "String" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_litGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_litGleam = function > | YLit x -> litGleam x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in the > macro." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRecGleam = {tag : int; free_vars : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LayoutRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LayoutRecGleam = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MethodRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MethodRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClosureRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClosureRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : > TyV[[]]; range : Ty; body : TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### codegenGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let codegenGleam (env : PartEvalResult) (x : TypedBind [[]]) = > let types = ResizeArray() > let functions = ResizeArray() > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecGleam = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a > |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (3).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x > if dirty then print true show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Map<int * string,Ty>) : UnionRecGleam = {free_vars=a |> > Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print false show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litGleam a > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let rec tyv x = > match x with > | YUnion a -> > let a = a.Item > match a.layout with > | UHeap -> sprintf "Uh%i" (uheap a.cases).tag > | UStack -> sprintf "Us%i" (ustack a.cases).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The F# > backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameGleam > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected a > record with the '{backend_nameGleam}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a | > TypeLit a -> type_litGleam a) |> String.concat "" > | YPrim a -> primGleam a > | YArray a -> > global' "import gary.{type ErlangArray}" > sprintf "ErlangArray(%s)" (tup_ty a) > | YFun(a,b,FT_Vanilla) -> sprintf "fn(%s) -> %s" (tup_ty a) (tup_ty b) > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at runtime. > They are a compile time feature only." > | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: > %A{a}" > and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i : %s" i > (tup_ty t)) |> String.concat ", " > and binds (s : CodegenEnv) (x : TypedBind [[]]) = > Array.iter (function > | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e > -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError > as e -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> try line s (tup d) with :? > CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1) > ) x > and tup x = > match data_term_vars x with > | [[||]] -> "Nil " > | [[|x|]] -> show_w x > | x -> Array.map show_w x |> String.concat ", " |> sprintf "#(%s) " > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> > tyv x) with > | [[||]] -> "Nil " > | [[|x|]] -> x > | x -> String.concat ", " x |> sprintf "#(%s) " > and op s d a = > let jp (a, b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args > | JPClosure(a,b) -> > let code = > [[ > "closure" > (a, b) |> closure |> _.tag |> string > "(" > if args = "" then "" else $")(#({args})" > ")" > if args = "" || args |> SpiralSm.contains ", " then "" > else "(Nil)" > ]] > |> SpiralSm.concat "" > if args = "" then > // trace Verbose (fun () -> $"""CodegenGleam.codegenGleam / > """) _locals > $"fn (x) {{ {code}(#(x))( Nil) }}" > else code > let free_vars do_annot x = > let f (L(i,t)) = if do_annot then sprintf "v%i : %s" i (tyv t) else > sprintf "v%i" i > match data_free_vars x with > | [[||]] -> "Nil " > | [[|x|]] -> f x > | x -> Array.map f x |> String.concat ", " |> sprintf "#(%s) " > let simple x = > match d with > | None -> x > | Some d -> > match free_vars false d |> SpiralSm.trim with > | "Nil" -> x > | d -> sprintf "let %s = %s" d x > |> line s > let complex f = > match d with > | None -> f s : unit > | Some d -> > match free_vars false d |> SpiralSm.trim with > | "Nil" -> f s > | d -> > line s (sprintf "let %s =" d) > f (indent s) > let layout_vars a = > let f i x = > match x with > | WV(L(i',_)) -> sprintf "l%i : v%i" i i' > | WLit x -> sprintf "l%i : %s" i (litGleam x) > a |> data_term_vars |> Array.mapi f |> String.concat ", " > let layout_index i x = > x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i" i i') > |> String.concat ", " > |> function "" -> () | x -> simple x > let length (a,b) = > global' "import gleam/string" > sprintf "string.length(%s)" (tup b) > |> simple > match a with > | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x > | CMType x -> tup_ty x | CMTypeLit x -> type_litGleam x) |> String.concat "" |> > simple > | TySizeOf t -> simple $"0" > | TyIf(cond,tr,fl) -> > complex <| fun s -> > // line s (sprintf "if %s then" (tup cond)) > line s (sprintf "case %s {" (tup cond)) > line (indent s) "True -> {" > binds (indent (indent s)) tr > line (indent s) "}" > line (indent s) "False -> {" > match fl with > | [[|TyLocalReturnData(DB,_)|]] -> > line (indent s) "Nil" > | _ -> > binds (indent (indent s)) fl > line (indent s) "}" > line s "}" > | TyJoinPoint(a,args) -> simple (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Gleam backend > does not support nesting other backends." > | TyWhile(a,b) -> > complex <| fun s -> > line s (sprintf "while %s {" (jp a)) > binds (indent s) b > line s "}" > | TyDo a -> > complex <| fun s -> > line s "{" > binds (indent s) a > line s "}" > | TyIndent a -> > complex <| fun s -> > binds (indent s) a > | TyIntSwitch(L(i,_),on_succ,on_fail) -> > complex <| fun s -> > line s (sprintf "case v%i {" i) > Array.iteri (fun i x -> > line (indent s) (sprintf "%i -> {" i) > binds (indent (indent s)) x > line (indent s) "}" > ) on_succ > line (indent s) "_ -> {" > binds (indent (indent s)) on_fail > line (indent s) "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > complex <| fun s -> > let case_tags = x.Item.tags > line s (sprintf "case %s {" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let prefix = > let x = x.Item > match x.layout with > | UHeap -> sprintf "Uh%i" (uheap x.cases).tag > | UStack -> sprintf "Us%i" (ustack x.cases).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > match data_free_vars a with > | [[||]] -> "" > | x -> sprintf "(%s)" (args x) > |> sprintf "%si%i%s" prefix i > ) > |> String.concat ", " > line (indent s) (sprintf "%s -> { // %s" cases k) > binds (indent (indent s)) b > line (indent s) "}" > ) on_succs > on_fail |> Option.iter (fun b -> > line (indent s) "_ -> {" > binds (indent (indent s)) b > line (indent s) "}" > ) > line s "}" > | TyUnionBox(a,b,c) -> > let c = c.Item > let i = c.tags.[[a]] > let vars = > match data_term_vars b with > | [[||]] -> "" > | x -> Array.map show_w x |> String.concat ", " |> sprintf > "(%s)" > match c.layout with > | UHeap -> sprintf "Uh%ii%i%s" (uheap c.cases).tag i vars > | UStack -> sprintf "Us%ii%i%s" (ustack c.cases).tag i vars > |> simple > | TyToLayout(a,b) -> > let a = layout_vars a > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else > sprintf "Heap%i(%s)" (heap b).tag a > | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag > else sprintf "Mut%i(%s)" (mut b).tag a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (4).\nGot: %s{show_ty b}" > |> simple > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a record.") > (mut t).data b > let a_vars = data_free_vars a > Array.iter2 (fun (L(i',_)) b -> > if a_vars |> Array.length > 1 > then line s (sprintf "let v%i = %s(..v%i, l%i: %s)" i (tup_ty t) > i i' (show_w b)) > else line s (sprintf "let v%i = %s(l%i: %s)" i (tup_ty t) i' > (show_w b)) > ) a_vars (data_term_vars c) > | TyArrayLiteral(a,b) -> simple <| sprintf "[[ %s ]]" (List.map tup b |> > String.concat ", ") > | TyArrayCreate(a,b) -> simple "[[]]" > | TyArrayLength(a,b) -> length (a,b) > | TyStringLength(a,b) -> length (a,b) > | TyFailwith(a,b) -> simple (sprintf "panic as %s" (tup b)) > | TyConv(a,b) -> > let b = tup b > match a with > | YPrim Int8T -> $"{b}" > | YPrim Int16T -> $"{b}" > | YPrim Int32T -> $"{b}" > | YPrim Int64T -> $"{b}" > | YPrim UInt8T -> $"{b}" > | YPrim UInt16T -> $"{b}" > | YPrim UInt32T -> $"{b}" > | YPrim UInt64T -> $"{b}" > | YPrim Float32T -> $"{b}" > | YPrim Float64T -> $"{b}" > | _ -> raise_codegen_error $"Compiler error: Unexpected type in > Conv. Got: {show_ty a}" > |> simple > | TyApply(L(i,t),b) -> > match tup b with > | "Nil " when tup_ty t |> SpiralSm.starts_with "fn(Nil ) -> " -> > $"v{i}(Nil ) " > | "Nil " -> $"v{i} " > | b' -> $"v{i}({b'})" > |> simple > | TyOp(Global, [[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup a > | TypeToVar, _ -> raise_codegen_error "The use of `` should never > appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | StringSlice, [[a;b;c]] -> sprintf "%s.[[int %s..int %s]]" (tup a) > (tup b) (tup c) > | ArrayIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | ArrayIndexSet, [[a;b;c]] -> sprintf "%s.[[int %s]] <- %s" (tup a) > (tup b) (tup c) > > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b) > | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup a) (tup b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup a) (tup b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b) > | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b) > | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b) > | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a) > > | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b) > | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b) > > | Neg, [[x]] -> sprintf " -%s" (tup x) > | Log, [[x]] -> sprintf "log %s" (tup x) > | Exp, [[x]] -> sprintf "exp %s" (tup x) > | Tanh, [[x]] -> sprintf "tanh %s" (tup x) > | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x) > | Sin, [[x]] -> sprintf "sin %s" (tup x) > | Cos, [[x]] -> sprintf "cos %s" (tup x) > | NanIs, [[x]] -> > match x with > | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf > "System.Single.IsNaN(%s)" (tup x) > | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf > "System.Double.IsNaN(%s)" (tup x) > | _ -> raise_codegen_error "Compiler error: Invalid type in > NanIs." > | UnionTag, [[DV(L(i,YUnion h))]] -> > let h = h.Item > let ty = > match h.layout with > | UHeap -> sprintf "Uh%i" (uheap h.cases).tag > | UStack -> sprintf "Us%i" (ustack h.cases).tag > let items = > h.cases > |> Seq.map (fun (KeyValue ((i, _), _)) -> > $"{ty}_{i}, {i}" > ) > |> String.concat "; " > $"[[ {items} ]] |> Map |> Map.find v{i}" > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i > args not supported" op l.Length > |> simple > and heap : _ -> LayoutRecGleam = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat ", " > if b = "" then line s (sprintf "Heap%i { Heap%i() }" x.tag x.tag) > else line s (sprintf "Heap%i { Heap%i(%s) }" x.tag x.tag b) > ) > and mut : _ -> LayoutRecGleam = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat ", " > if b = "" then line s (sprintf "Mut%i { Mut%i() }" x.tag x.tag) > else line s (sprintf "Mut%i { Mut%i(%s) }" x.tag x.tag b) > ) > and uheap : _ -> UnionRecGleam = union (fun s x -> > line s (sprintf "Uh%i {" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "Uh%ii%i" x.tag i) > | a -> line (indent s) (sprintf "Uh%ii%i(%s)" x.tag i (a |> > Array.map (fun (L(_,t)) -> tyv t) |> String.concat ", ")) > i <- i+1 > ) > line s "}" > ) > and ustack : _ -> UnionRecGleam = union (fun s x -> > line s (sprintf "Us%i {" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "Us%ii%i" x.tag i) > | a -> line (indent s) (sprintf "Us%ii%i(%s)" x.tag i (a |> > Array.mapi (fun i' (L(_,t)) -> sprintf "f%ii%i : %s" i i' (tyv t)) |> > String.concat ", ")) > i <- i+1 > ) > line s "}" > ) > and method : _ -> MethodRecGleam = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; > range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method dictionary is > malformed" > ) (fun s x -> > let range_ty = tup_ty x.range > let is_fn = range_ty |> SpiralSm.starts_with "fn(Nil ) -> " > let ret = > if is_fn > then $"{range_ty} {{ fn(_)" > else range_ty > line s (sprintf "method%i (%s) -> %s {" x.tag (args_tys x.free_vars) > ret) > binds (indent s) x.body > if is_fn > then line s "}}" > else line s "}" > ) > and closure : _ -> ClosureRecGleam = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars > args; domain_args=data_free_vars domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not > supported in the F# backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in the > closure join point." > ) (fun s x -> > let domain = > let domain_args = > if x.domain_args |> Array.length < 1 then > x.domain_args > |> Array.map (fun (L(i,t)) -> > sprintf "v%i : %s" i (tyv t) > ) > else > let t = > x.domain_args > |> Array.map (fun (L(_,t)) -> $"{tyv t}") > |> String.concat ", " > [[| $"x : #( {t})" |]] > match domain_args with > | [[||]] -> "" > | [[|x|]] -> x > | x -> String.concat ", " x > let free_vars_tys = > if x.domain_args |> Array.length < 1 then > let t = > x.free_vars > |> Array.map (fun (L(_,t)) -> tup_ty t) > |> String.concat ", " > $"x : #( {t})" > else args_tys x.free_vars > let args = > [[| free_vars_tys; domain |]] > |> Array.filter ((<>) "") > |> String.concat ", " > let args' = > if x.domain_args |> Array.length < 0 then > "" > else > let args = > (if x.domain_args |> Array.isEmpty then x.free_vars else > x.domain_args) > |> Array.map (fun (L(i,_)) -> $"v{i}") > |> String.concat ", " > $"let #({args}) = x" > // line s (sprintf "closure%i () -> fn(_) -> %s { fn(%s) { %s" x.tag > (tup_ty x.range) args args') > line s (sprintf "closure%i () -> fn(_) -> fn(Nil) -> %s { fn(%s) { > %s\nfn (_) {" x.tag (tup_ty x.range) args args') > binds (indent s) x.body > line s "}}}" > ) > > let main = System.Text.StringBuilder() > binds {text=main; indent=0} x > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> > ignore) > types |> Seq.iteri (fun i x -> program.Append("pub type ").Append(x) |> > ignore) > functions |> Seq.iteri (fun i x -> program.Append("pub fn ").Append(x) |> > ignore) > program.Append($"pub fn main () {{ {main} }}").ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 2.87s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (362,81)-(362,84) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## RefCounting > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Here are the reference counting analysis passes. > open System.Collections.Generic > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_add x i v = > let c = Option.defaultValue 0 (Map.tryFind x v) + i > if c = 0 then Map.remove x v else Map.add x c v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_union a b = Map.foldBack varc_add a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_data > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_data call_data = > let mutable v = Map.empty > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DV x -> v <- varc_add x 1 v > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DLit _ | DTLit _ | DSymbol _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_set > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_set x i = Set.fold (fun s v -> Map.add v i s) Map.empty x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### refc_used_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let refc_used_vars (x : TypedBind [[]]) = > let g_bind : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let fv x = x |> data_free_vars |> Set > let jp (x : JoinPointCall) = snd x |> Set > let rec binds x = > Array.foldBack (fun k vs -> > match k with > | TyLet(d,_,o) -> vs + op o - fv d > | TyLocalReturnOp(_,o,_) -> vs + op o > | TyLocalReturnData(d,_) -> vs + fv d > |> fun vs -> g_bind.Add(k,vs); vs > ) x Set.empty > and op (x : TypedOp) : TyV Set = > match x with > | TySizeOf _ -> Set.empty > | TyMacro l -> List.fold (fun s -> function CMTerm d -> s + fv d | _ -> > s) Set.empty l > | TyArrayLiteral(_,l) | TyOp(_,l) -> List.fold (fun s x -> s + fv x) > Set.empty l > | TyToLayout(x,_) | TyUnionBox(_,x,_) | TyFailwith(_,x) | TyConv(_,x) | > TyArrayCreate(_,x) | TyArrayLength(_,x) | TyStringLength(_,x) -> fv x > | TyWhile(cond,body) -> jp cond + binds body > | TyDo body | TyIndent body -> binds body > | TyLayoutIndexAll(i) | TyLayoutIndexByKey(i,_) -> Set.singleton i > | TyApply(i,d) | TyLayoutMutableSet(i,_,d) -> Set.singleton i + fv d > | TyJoinPoint x -> jp x > | TyBackend(_,_,_) -> Set.empty > | TyIf(cond,tr',fl') -> fv cond + binds tr' + binds fl' > | TyUnionUnbox(vs,_,on_succs',on_fail') -> > let vs = vs |> Set > let on_fail = > match on_fail' with > | Some x -> binds x > | None -> Set.empty > Map.fold (fun s k (lets,body) -> > let lets = List.fold (fun s x -> s + fv x) Set.empty lets > s + (binds body - lets) > ) (vs + on_fail) on_succs' > | TyIntSwitch(tag,on_succs',on_fail') -> > let vs = Set.singleton tag > let on_fail = binds on_fail' > Array.fold (fun s body -> s + binds body) (vs + on_fail) on_succs' > binds x |> ignore > g_bind > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RefcVars > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RefcVars = {g_incr : Dictionary<TypedBind,TyV Set>; g_decr : > Dictionary<TypedBind,TyV Set>; g_op : Dictionary<TypedBind,Map<TyV, int>>; > g_op_decr : Dictionary<TypedBind,TyV Set>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### refc_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let refc_prepass (new_vars : TyV Set) (increfed_vars : TyV Set) (x : TypedBind > [[]]) = > let used_vars = refc_used_vars x > let g_incr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let g_decr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let g_op : Dictionary<TypedBind, _> = Dictionary(HashIdentity.Reference) > let g_op_decr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > > let add (d : Dictionary<TypedBind, TyV Set>) k x = if Set.isEmpty x then () > else d.Add(k,x) > let add' (d : Dictionary<TypedBind, Map<TyV,int>>) k x = if Map.isEmpty x > then () else d.Add(k,x) > let fv x = x |> data_free_vars |> Set > let rec binds (new_vars : TyV Set) (increfed_vars : TyV Set) (k : TypedBind > [[]]) = > Array.fold (fun (new_vars, increfed_vars) k -> > add g_incr k new_vars > let increfed_vars = new_vars + increfed_vars > > let used_vars = used_vars.[[k]] > let decref_vars = increfed_vars - used_vars > add g_decr k decref_vars > let r = increfed_vars - decref_vars > match k with > | TyLet(d,_,o) -> > op k Set.empty o > let new_vars = fv d > match o with > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyOp(ArrayIndex,_) > -> new_vars, r > | _ -> Set.empty, r + new_vars > | TyLocalReturnOp(_,o,_) -> > op k r o > Set.empty, r > | TyLocalReturnData(d,_) -> > add' g_op k (varc_data d) > add g_op_decr k r > Set.empty, r > ) (new_vars, increfed_vars) k > |> ignore > and op k increfed_vars (x : TypedOp) : unit = > let fun_call q = add' g_op k q; add g_op_decr k increfed_vars > match x with > | TyApply(a,b) -> varc_add a 1 (varc_data b) |> fun_call > | TyJoinPoint(_,x) -> Array.fold (fun s x -> varc_add x 1 s) Map.empty x > |> fun_call > | TyArrayLiteral(_,x) -> List.fold (fun s x -> varc_union s (varc_data > x)) Map.empty x |> fun_call > | TyUnionBox(_,x,_) | TyToLayout(x,_) -> varc_data x |> fun_call > | TySizeOf _ | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyMacro _ | > TyOp _ | TyFailwith _ | TyConv _ > | TyArrayCreate _ | TyArrayLength _ | TyStringLength _ | > TyLayoutMutableSet _ | TyBackend _ -> () > | TyWhile(_,body) -> binds Set.empty Set.empty body > | TyDo body | TyIndent body -> binds Set.empty Set.empty body > | TyIf(_,tr',fl') -> binds Set.empty increfed_vars tr'; binds Set.empty > increfed_vars fl' > | TyUnionUnbox(_,_,on_succs',on_fail') -> > Map.iter (fun _ (lets,body) -> > binds (List.fold (fun s x -> s + fv x) Set.empty lets) > increfed_vars body > ) on_succs' > Option.iter (binds Set.empty increfed_vars) on_fail' > | TyIntSwitch(_,on_succs',on_fail') -> > Array.iter (binds Set.empty increfed_vars) on_succs' > binds Set.empty increfed_vars on_fail' > binds new_vars increfed_vars x > > {g_incr=g_incr; g_op=g_op; g_decr=g_decr; g_op_decr=g_op_decr} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenC > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenC = > // open System > // open System.Text > open System.Collections.Generic > > let sizeof_tyvC = function > | YPrim (Int64T | UInt64T | Float64T) -> 8 > | YPrim (Int32T | UInt32T | Float32T) -> 4 > | YPrim (Int16T | UInt16T) -> 2 > | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1 > | _ -> 8 > let order_argsC v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare > (sizeof_tyvC t') (sizeof_tyvC t)) > let lineC x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s |> > ignore > let line' x s = line x (String.concat " " s) > > let rec is_heap f x = > Array.exists (fun (L(i,t)) -> > match t with > | YUnion a when a.Item.layout = UStack -> Array.exists (snd >> f >> > is_heap f) a.Item.tag_cases > | YPrim StringT -> true > | YPrim _ -> false > | _ -> true > ) x > let is_stringC = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> true > | _ -> false > > type BindsReturnC = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let term_vars_to_tysC x = x |> Array.map (function WV(L(_,t)) -> t | WLit x > -> YPrim (lit_to_primitive_type x)) > let binds_last_dataC x = x |> Array.last |> function TyLocalReturnData(x,_) > | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> raise_codegen_error "Compiler error: > Cannot find the return data of the last bind." > > type UnionRecC = {tag : int; free_vars : Map<int * string, TyV[[]]>} > type LayoutRecC = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type MethodRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]; name : string option} > type ClosureRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; > domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]} > type TupleRecC = {tag : int; tys : Ty [[]]} > type ArrayRecC = {tag : int; ty : Ty; tyvs : TyV[[]]} > type CFunRecC = {tag : int; domain_args_ty : Ty[[]]; range : Ty} > > let size_t = UInt32T > > let lit_stringC x = > let strb = System.Text.StringBuilder(String.length x + 2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > > let codegenC (env : PartEvalResult) (x : TypedBind [[]]) = > let globals = ResizeArray() > let fwd_dcls = ResizeArray() > let types = ResizeArray() > let functions = ResizeArray() > > let malloc, free = "malloc", "free" > > let print_decref s_fun name_fun type_arg name_decref = > line s_fun (sprintf "void %s(%s * x){" name_fun type_arg) > let _ = > let s_fun = indent s_fun > line s_fun (sprintf "if (x != NULL && --(x->refc) == 0) { %s(x); > %s(x); }" name_decref free) > line s_fun "}" > > let print show r = > let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0} > let s_typ = {text=System.Text.StringBuilder(); indent=0} > let s_fun = {text=System.Text.StringBuilder(); indent=0} > show s_typ_fwd s_typ s_fun r > let f (a : _ ResizeArray) (b : CodegenEnv) = > let text = b.text.ToString() > if text <> "" then a.Add(text) > f fwd_dcls s_typ_fwd > f types s_typ > f functions s_fun > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecC = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) > a in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (7).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecC = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let tuple show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; tys=x} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let carray' show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; ty=x; tyvs = env.ty_to_data x |> > data_free_vars} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let cstring' show = > let mutable dirty = true > fun () -> > if dirty then print show () > dirty <- false > > let cfun' show = > let dict = Dictionary(HashIdentity.Structural) > let f (a : Ty, b : Ty) = {tag=dict.Count; domain_args_ty=a |> > env.ty_to_data |> data_free_vars |> Array.map (fun (L(_,t)) -> t); range=b} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > > let tmp = > let mutable i = 0u > fun () -> let x = i in i <- i + 1u; x > > let global' = > let has_added = HashSet() > fun x -> if has_added.Add(x) then globals.Add x > > let import x = global' $"#include <{x}>" > let import' x = global' $"#include \"{x}\"" > > let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x > > let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind > [[]]) = binds (refc_prepass Set.empty (Set args) x) s BindsTailEnd x > and return_local s ret (x : string) = > match ret with > | [[||]] -> line s $"{x};" > | [[|L(i,_)|]] -> line s $"v{i} = {x};" > | ret -> > let tmp_i = tmp() > line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};" > Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret > |> line' s > and binds (vars : RefcVars) (s : CodegenEnv) (ret : BindsReturnC) (stmts > : TypedBind [[]]) = > let tup_destruct (a,b) = > Array.map2 (fun (L(i,_)) b -> > match b with > | WLit b -> $"v{i} = {lit b};" > | WV (L(i',_)) -> $"v{i} = v{i'};" > ) a b > Array.iter (fun x -> > // This complicated looking piece of code is responsible for > putting the incref and decref statements at the beginning of every > // statement. It's actually the only place where ref counting > code is outputted in the codegen. > let _ = > let f k = get_default k x (fun () -> Set.empty) > let f' k = get_default k x (fun () -> Map.empty) > let incr, decr, op, op_decr = varc_set (f vars.g_incr) 1, > varc_set (f vars.g_decr) -1, f' vars.g_op, varc_set (f vars.g_op_decr) -1 > let incr, decr = varc_union incr decr |> varc_union op |> > varc_union op_decr |> Map.partition (fun _ v -> 0 < v) > refc_varc incr |> line' s; refc_varc decr |> line' s > match x with > | TyLet(d,trace,a) -> > try let d = data_free_vars d > let decl_vars = Array.map (fun (L(i,t)) -> $"{tyv t} > v{i};") d > match a with > | TyMacro a -> > let m = a |> List.map (function CMText x -> x | > CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> > String.concat "" > let q = m.Split("\\v") > if q.Length = 1 then > decl_vars |> line' s > return_local s d m > else > if d.Length = q.Length-1 then > let w = > System.Text.StringBuilder(m.Length+8) > let tag (L(i,_)) = i : int > Array.iteri (fun i v -> > w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d > > w.Append(q.[[d.Length]]).Append(';').ToString() |> line s > else > raise_codegen_error "The special \\v macro > requires the same number of free vars in its binding as there are \\v in the > code." > | _ -> > decl_vars |> line' s > op vars s (BindsLocal d) a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op vars s ret a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> line' s (tup_destruct > (l,data_term_vars d)) > | BindsTailEnd -> line s $"return {tup_data d};" > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > ) stmts > and refc_change'' (f : int * Ty -> string) count (L(i,t')) = > let v = i,t' > let inline g decref = > if count = -1 then Some (decref()) > elif count = 1 then Some $"{f v}->refc++;" > elif 1 < count then Some $"{f v}->refc += {count};" > else raise_codegen_error $"Compiler error: Invalid count in > refc_change''. Got: {count}" > match t' with > | YUnion t -> > match t.Item.layout with > | UStack -> > if count = -1 then Some $"USDecref{(ustack t).tag}(&({f > v}));" > elif 0 < count then Some (String.replicate count > $"USIncref{(ustack t).tag}(&({f v}));") > else raise_codegen_error $"Compiler error: Invalid count in > refc_change''. UStack case. Got: {count}" > | UHeap -> g (fun () -> $"UHDecref{(uheap t).tag}({f v});") > | YArray t -> g (fun () -> $"ArrayDecref{(carray t).tag}({f v});") > | YFun(a,b,FT_Vanilla) -> g (fun () -> $"{f v}->decref_fptr({f > v});") > | YPrim StringT -> g (fun () -> $"StringDecref({f v});" ) > | YLayout(_,Heap) as a -> g (fun () -> $"HeapDecref{(heap > a).tag}({f v});") > | YLayout(_,HeapMutable) as a -> g (fun () -> $"MutDecref{(mut > a).tag}({f v});") > | _ -> None > and refc_change' (f : int * Ty -> string) count (x : TyV [[]]) : string > [[]] = Array.choose (refc_change'' f count) x > and refc_change f c x = refc_change' (fun (i,t) -> f i) c x > and refc_varc x = > let ar = ResizeArray(Map.count x) > Map.iter (fun k v -> refc_change'' (fun (i,_) -> $"v{i}") v k |> > Option.iter ar.Add) x > ar > //and refc_incr x : string [[]] = refc_change (fun i -> $"v{i}") 1 x > //and refc_decr x : string [[]] = refc_change (fun i -> $"v{i}") -1 x > and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a > and args' b = data_term_vars b |> Array.map show_w |> String.concat ", " > and tup_term_vars x = > let args = Array.map show_w x |> String.concat ", " > if 1 < x.Length then sprintf "TupleCreate%i(%s)" (tup > (term_vars_to_tysC x)).tag args else args > and tup_data x = tup_term_vars (data_term_vars x) > and tup_ty_tys = function > | [[||]] -> "void" > | [[|x|]] -> tyv x > | x -> sprintf "Tuple%i" (tup x).tag > and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x) > and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UStack -> sprintf "US%i" (ustack a).tag > | UHeap -> sprintf "UH%i *" (uheap a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i *" (heap a).tag > | HeapMutable -> sprintf "Mut%i *" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The C > backend doesn't support stack mutable layout types." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty > a | TypeLit a -> type_lit a) |> String.concat "" > | YPrim a -> prim a > | YArray a -> sprintf "Array%i *" (carray a).tag > | YFun(a,b,FT_Vanilla) -> sprintf "Fun%i *" (cfun (a,b)).tag > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error (sprintf "Compiler error: Type not > supported in the codegen.\nGot: %A" a) > and prim = function > | Int8T -> "int8_t" > | Int16T -> "int16_t" > | Int32T -> "int32_t" > | Int64T -> "int64_t" > | UInt8T -> "uint8_t" > | UInt16T -> "uint16_t" > | UInt32T -> "uint32_t" > | UInt64T -> "uint64_t" // are defined in stdint.h > | Float32T -> "float" > | Float64T -> "double" > | BoolT -> "bool" // is defined in stdbool.h > | CharT -> "char" > | StringT -> cstring(); "String *" > and lit = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%il" x > | LitInt64 x -> sprintf "%ill" x > | LitUInt8 x -> sprintf "%iu" x > | LitUInt16 x -> sprintf "%iu" x > | LitUInt32 x -> sprintf "%iul" x > | LitUInt64 x -> sprintf "%iull" x > | LitFloat32 x -> > if x = infinityf then "HUGE_VALF" // nan/inf macros are defined > in math.h > elif x = -infinityf then "-HUGE_VALF" > elif System.Single.IsNaN x then "NAN" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "HUGE_VAL" > elif x = -infinity then "-HUGE_VAL" > elif System.Double.IsNaN x then "NAN" > else x.ToString("R") |> add_dec_point > | LitString x -> > cstring() > lit_stringC x |> sprintf "StringLit(%i, %s)" (x.Length + 1) > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" // true and false are > defined in stddef.h > and type_lit = function > | YLit x -> lit x > | YSymbol x -> x > | YNominal _ | YApply _ as x -> type_lit (env.nominal_apply x) > | x -> raise_codegen_error "Compiler error: Expecting a type literal > in the macro." > and op (vars : RefcVars) s (ret : BindsReturnC) a = > let binds a b = binds vars a b > let return' (x : string) = > match ret with > | BindsLocal ret -> return_local s ret x > | BindsTailEnd -> line s $"return {x};" > let layout_index (x'_i : int) (x' : TyV [[]]) = > match ret with > | BindsLocal x -> Array.map2 (fun (L(i,_)) (L(i',_)) -> $"v{i} = > v{x'_i}->v{i'};") x x' |> line' s > | BindsTailEnd -> raise_codegen_error "Compiler error: Layout > index should never come in end position." > let jp (a,b') = > let args = args b' > match a with > | JPMethod(a,b) -> > let x = method (a,b) > sprintf "%s%i(%s)" (Option.defaultValue "method" x.name) > x.tag args > | JPClosure(a,b) -> sprintf "ClosureCreate%i(%s)" (closure > (a,b)).tag args > let string_in_op = function DLit (LitString b) -> lit_stringC b | b > -> $"{tup_data b}->ptr" > match a with > | TySizeOf t -> return' $"sizeof({tup_ty t})" > | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken > care of in the `binds` function." > | TyIf(cond,tr,fl) -> > line s (sprintf "if (%s){" (tup_data cond)) > binds (indent s) ret tr > line s "} else {" > binds (indent s) ret fl > line s "}" > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The C backend > does not support nesting of other backends." > | TyWhile(a,b) -> > let cond = > match a with > | JPMethod(a,b),b' -> sprintf "method_while%i(%s)" > (method_while (a,b)).tag (args b') > | _ -> raise_codegen_error "Expected a regular method rather > than closure create in the while conditional." > line s (sprintf "while (%s){" cond) > binds (indent s) (BindsLocal [[||]]) b > line s "}" > | TyDo a | TyIndent a -> > binds s ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > line s (sprintf "switch (v%i) {" v_i) > let _ = > let s = indent s > Array.iteri (fun i x -> > line s (sprintf "case %i: {" i) > binds (indent s) ret x > line (indent s) "break;" > line s "}" > ) on_succ > line s "default: {" > binds (indent s) ret on_fail > line s "}" > line s "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > let acs = match x.Item.layout with UHeap -> "->" | UStack -> "." > let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag" > List.pairwise is > |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == > v{i'}{acs}tag") > |> String.concat " && " > |> function "" -> head | x -> $"{x} ? {head} : -1" > |> sprintf "switch (%s) {" |> line s > let _ = > let s = indent s > Map.iter (fun k (a,b) -> > let union_i = case_tags.[[k]] > let decr = get_default vars.g_decr (Array.head b) (fun > () -> Set.empty) > line s (sprintf "case %i: { // %s" union_i k) > List.iter2 (fun (L(data_i,_)) a -> > let a, s = data_free_vars a, indent s > let qs = ResizeArray(a.Length) > Array.iteri (fun field_i (L(v_i,t) as v) -> > if Set.contains v decr = false then qs.Add > $"{tyv t} v{v_i} = v{data_i}{acs}case{union_i}.v{field_i};" > ) a > line' s qs > ) is a > binds (indent s) ret b > line (indent s) "break;" > line s "}" > ) on_succs > on_fail |> Option.iter (fun b -> > line s "default: {" > binds (indent s) ret b > line s "}" > ) > line s "}" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = args' b > match c.layout with > | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars > | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> sprintf "HeapCreate%i(%s)" (heap b).tag (args' a) > | HeapMutable -> sprintf "MutCreate%i(%s)" (mut b).tag > (args' a) > | StackMutable -> raise_codegen_error "The C backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (8).\nGot: %s{show_ty b}" > |> return' > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The C backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The C backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let q = mut t // `mut t` is correct here, peval strips the > YLayout. > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a > record.") q.data b > Array.map2 (fun (L(i',_)) b -> $"&(v{i}->v{i'}), {show_w b}") > (data_free_vars a) (data_term_vars c) |> String.concat ", " > |> sprintf "AssignMut%i(%s)" (assign_mut (tyvs_to_tys > q.free_vars)).tag |> return' > | TyArrayLiteral(a,b') -> > let b = List.map tup_data b' |> String.concat "," |> sprintf > "{%s}" > $"ArrayLit{(carray a).tag}({b'.Length}, ({tup_ty a} [[]]){b})" > |> return' > | TyArrayCreate(a,b) -> > let a = carray a > let is_heap : string = is_heap (env.ty_to_data >> > data_free_vars) a.tyvs |> sprintf "%b" > $"ArrayCreate{a.tag}({tup_data b}, {is_heap})" |> return' > | TyFailwith(a,b) -> > let fmt = @"%s\n" > line s $"fprintf(stderr, \"{fmt}\", {string_in_op b});" > line s "exit(EXIT_FAILURE);" // TODO: Print out the error traces > as well. > | TyConv(a,b) -> return' $"({tyv a}){tup_data b}" > | TyApply(L(i,_),b) -> > match args' b with > | "" -> $"v{i}->fptr(v{i})" > | b -> $"v{i}->fptr(v{i}, {b})" > |> return' > | TyArrayLength(_,b) -> return' $"{tup_data b}->len" > | TyStringLength(_,b) -> return' $"{tup_data b}->len-1" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > let float_suffix = function > | DV(L(_,YPrim Float32T)) | DLit(LitFloat32 _) -> "f" > | _ -> "" > match op, l with > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s->ptr[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is > not supported natively in the C backend. Use a library implementation instead." > | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> > match tup_ty t with > | "void" -> "/* void array index */" > | _ -> sprintf "%s->ptr[[%s]]" (tup_data a) (tup_data b) > | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> > let a',b',c' = tup_data a, tup_data b, tup_data c > match c' with > | "" -> "/* void array set */" > | _ -> $"AssignArray{(assign_array (tyvs_to_tys (carray > t).tyvs)).tag}(&({a'}->ptr[[{b'}]]), {c'})" > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow%s(%s,%s)" (float_suffix a) > (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) == 0" (string_in_op a) (string_in_op b) // TODO: > Optimize string structural comparison in the real_core > | NEQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) != 0" (string_in_op a) (string_in_op b) > | GT, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) > 0" (string_in_op a) (string_in_op b) > | GTE, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) >= 0" (string_in_op a) (string_in_op b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> import "math.h"; sprintf "log%s(%s)" > (float_suffix x) (tup_data x) > | Exp, [[x]] -> import "math.h"; sprintf "exp%s(%s)" > (float_suffix x) (tup_data x) > | Tanh, [[x]] -> import "math.h"; sprintf "tanh%s(%s)" > (float_suffix x) (tup_data x) > | Sqrt, [[x]] -> import "math.h"; sprintf "sqrt%s(%s)" > (float_suffix x) (tup_data x) > | NanIs, [[x]] -> import "math.h"; sprintf "isnan(%s)" (tup_data > x) > | UnionTag, [[DV(L(i,YUnion l)) as x]] -> > match l.Item.layout with > | UHeap -> "->tag" > | UStack -> ".tag" > |> sprintf "v%i%s" i > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and print_ordered_args s v = // Unlike C# for example, C keeps the > struct fields in input order. To reduce padding, it is best to order the fields > from largest to smallest. > order_argsC v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} > v{i};") > and method_templ is_while fun_name : _ -> MethodRecC = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a; name=name} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun _ s_typ s_fun x -> > let ret_ty = tup_ty x.range > let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv > x} v{i}") |> String.concat ", " > let fun_name = Option.defaultValue fun_name x.name > line s_fun (sprintf "%s %s%i(%s){" ret_ty fun_name x.tag args) > binds_start (if is_while then [[||]] else x.free_vars) (indent > s_fun) x.body > line s_fun "}" > ) > and method_while : _ -> MethodRecC = method_templ true "method_while" > and method : _ -> MethodRecC = method_templ false "method" > and closure : _ -> ClosureRecC = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; > free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars > domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_)-> raise_codegen_error "Non-standard functions are > not supported in the C backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > line s_typ (sprintf "typedef struct Closure%i Closure%i;" i i) > line s_typ (sprintf "struct Closure%i {" i) > let _ = > let s_typ = indent s_typ > line s_typ $"int refc;" > line s_typ $"void (*decref_fptr)(Closure{i} *);" > match x.domain_args |> Array.map (fun (L(_,t)) -> tyv t) |> > String.concat ", " with > | "" -> $"{range} (*fptr)(Closure{i} *);" > | domain_args_ty -> $"{range} (*fptr)(Closure{i} *, > {domain_args_ty});" > |> line s_typ > print_ordered_args s_typ x.free_vars > line s_typ "};" > > line s_fun (sprintf "static inline void > ClosureDecrefBody%i(Closure%i * x){" i i) > let _ = > let s_fun = indent s_fun > x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line' > s_fun > line s_fun "}" > > print_decref s_fun $"ClosureDecref{i}" $"Closure{i}" > $"ClosureDecrefBody{i}" > > match x.domain_args |> Array.map (fun (L(i,t)) -> $"{tyv t} > v{i}") |> String.concat ", " with > | "" -> sprintf "%s ClosureMethod%i(Closure%i * x){" range i i > | domain_args -> sprintf "%s ClosureMethod%i(Closure%i * x, > %s){" range i i domain_args > |> line s_fun > let _ = > let s_fun = indent s_fun > x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i} = > x->v{i};") |> line' s_fun > line s_fun $"ClosureDecref{i}(x);" > binds_start x.domain_args s_fun x.body > line s_fun "}" > > let fun_tag = (cfun (x.domain,x.range)).tag > let free_vars = x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv > t} v{i}") > line s_fun (sprintf "Fun%i * ClosureCreate%i(%s){" fun_tag i > (String.concat ", " free_vars)) > let _ = > let s_fun = indent s_fun > line s_fun $"Closure{i} * x = {malloc}(sizeof(Closure{i}));" > line s_fun "x->refc = 1;" > line s_fun $"x->decref_fptr = ClosureDecref{i};" > line s_fun $"x->fptr = ClosureMethod{i};" > x.free_vars |> Array.map (fun (L(i,_)) -> $"x->v{i} = > v{i};") |> line' s_fun > line s_fun $"return (Fun{fun_tag} *) x;" > line s_fun "}" > ) > and cfun : _ -> CFunRecC = > cfun' (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > line s_typ $"typedef struct Fun{i} Fun{i};" > line s_typ (sprintf "struct Fun%i{" i) > let _ = > let s_typ = indent s_typ > line s_typ $"int refc;" > line s_typ $"void (*decref_fptr)(Fun{i} *);" > match x.domain_args_ty |> Array.map tyv |> String.concat ", > " with > | "" -> $"{range} (*fptr)(Fun{i} *);" > | domain_args_ty -> $"{range} (*fptr)(Fun{i} *, > {domain_args_ty});" > |> line s_typ > line s_typ "};" > ) > and tup : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let name = sprintf "Tuple%i" x.tag > line s_typ "typedef struct {" > x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args > (indent s_typ) > line s_typ (sprintf "} %s;" name) > > let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} v{i}") > line s_fun (sprintf "static inline %s TupleCreate%i(%s){" name > x.tag (String.concat ", " args)) > let _ = > let s_fun = indent s_fun > line s_fun $"{name} x;" > Array.init args.Length (fun i -> $"x.v{i} = v{i};") |> line' > s_fun > line s_fun $"return x;" > line s_fun "}" > ) > and assign_mut : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let tyvs = Array.mapi (fun i t -> L(i,t)) x.tys > let args = Array.mapi (fun i t -> let t = tyv t in $"{t} * a{i}, > {t} b{i}") x.tys |> String.concat ", " > line s_fun (sprintf "static inline void AssignMut%i(%s){" x.tag > args) > let _ = > let s_fun = indent s_fun > refc_change (fun i -> $"b{i}") 1 tyvs |> line' s_fun > refc_change (fun i -> $"*a{i}") -1 tyvs |> line' s_fun > Array.init tyvs.Length (fun i -> $"*a{i} = b{i};") |> line' > s_fun > line s_fun "}" > ) > and assign_array : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let tyvs, T = Array.mapi (fun i t -> L(i,t)) x.tys, tup_ty_tys > x.tys > line s_fun (sprintf "static inline void AssignArray%i(%s * a, %s > b){" x.tag T T) > let _ = > let s_fun = indent s_fun > match tyvs with > | [[||]] -> raise_codegen_error "Compiler error: Void types > not allowed in assign." > | [[|t|]] -> > refc_change (fun i -> "b") 1 tyvs |> line' s_fun > refc_change (fun i -> "*a") -1 tyvs |> line' s_fun > $"*a = b;" |> line s_fun > | _ -> > refc_change (fun i -> $"b.v{i}") 1 tyvs |> line' s_fun > refc_change (fun i -> $"a->v{i}") -1 tyvs |> line' s_fun > $"*a = b;" |> line s_fun > line s_fun "}" > ) > and layout_tmpl name : _ -> LayoutRecC = > layout (fun _ s_typ s_fun (x : LayoutRecC) -> > let i = x.tag > let name' = sprintf "%s%i" name i > > line s_typ "typedef struct {" > let _ = > let s_typ = indent s_typ > line s_typ "int refc;" > print_ordered_args s_typ x.free_vars > line s_typ (sprintf "} %s;" name') > > line s_fun (sprintf "static inline void %sDecrefBody%i(%s * x){" > name i name') > let _ = > let s_fun = indent s_fun > x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line' > s_fun > line s_fun "}" > > print_decref s_fun $"{name}Decref{i}" name' > $"{name}DecrefBody{i}" > > let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv x} > v{i}") > line s_fun (sprintf "%s * %sCreate%i(%s){" name' name i > (String.concat ", " args)) > let _ = > let s_fun = indent s_fun > line s_fun $"{name'} * x = {malloc}(sizeof({name'}));" > line s_fun "x->refc = 1;" > Array.init args.Length (fun i -> $"x->v{i} = v{i};") |> > line' s_fun > line s_fun $"return x;" > line s_fun "}" > ) > and heap : _ -> LayoutRecC = layout_tmpl "Heap" > and mut : _ -> LayoutRecC = layout_tmpl "Mut" > and union_tmpl is_stack : Union -> UnionRecC = > let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x > |> ignore > union (fun s_fwd s_typ s_fun x -> > let i = x.tag > match is_stack with > | true -> line s_typ "typedef struct {" > | false -> > line s_fwd (sprintf "typedef struct UH%i UH%i;" i i) > line s_typ (sprintf "struct UH%i {" i) > let _ = > let s_typ = indent s_typ > match is_stack with > | true -> () > | false -> line s_typ "int refc;" > line s_typ "int tag;" > line s_typ "union {" > let _ = > let s_typ = indent s_typ > map_iteri (fun tag (_, k) v -> > if Array.isEmpty v = false then > line s_typ "struct {" > print_ordered_args (indent s_typ) v > line s_typ (sprintf "} case%i; // %s" tag k) > ) x.free_vars > line s_typ "};" > match is_stack with > | true -> line s_typ (sprintf "} US%i;" i) > | false -> line s_typ "};" > > let print_refc name typ q = > line s_fun (sprintf "static inline void %s(%s * x){" name > typ) > let _ = > let s_fun = indent s_fun > line s_fun "switch (x->tag) {" > map_iteri (fun tag k v -> > let s_fun = indent s_fun > let refc = v |> refc_change (fun i -> > $"x->case{tag}.v{i}") q > if refc.Length <> 0 then > line s_fun (sprintf "case %i: {" tag) > let _ = > let s_fun = indent s_fun > refc |> line' s_fun > line s_fun "break;" > line s_fun "}" > ) x.free_vars > line s_fun "}" > line s_fun "}" > > match is_stack with > | true -> > print_refc $"USIncrefBody{i}" $"US{i}" 1 > print_refc $"USDecrefBody{i}" $"US{i}" -1 > | false -> print_refc $"UHDecrefBody{i}" $"UH{i}" -1 > > match is_stack with > | true -> > line s_fun (sprintf "void USIncref%i(US%i * x){ > USIncrefBody%i(x); }" i i i) > line s_fun (sprintf "void USDecref%i(US%i * x){ > USDecrefBody%i(x); }" i i i) > | false -> > line s_fwd (sprintf "void UHDecref%i(UH%i * x);" i i) > print_decref s_fun $"UHDecref{i}" $"UH{i}" > $"UHDecrefBody{i}" > > map_iteri (fun tag (_, k) v -> > let args = v |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i}") > |> String.concat ", " > if is_stack then > line s_fun (sprintf "US%i US%i_%i(%s) { // %s" i i tag > args k) > let _ = > let s_fun = indent s_fun > line s_fun $"US{i} x;" > line s_fun $"x.tag = {tag};" > if v.Length <> 0 then > v |> Array.map (fun (L(i,t)) -> > $"x.case{tag}.v{i} = v{i};") |> line' s_fun > line s_fun "return x;" > line s_fun "}" > else > line s_fun (sprintf "UH%i * UH%i_%i(%s) { // %s" i i tag > args k) > let _ = > let s_fun = indent s_fun > line s_fun $"UH{i} * x = {malloc}(sizeof(UH{i}));" > line s_fun $"x->tag = {tag};" > line s_fun "x->refc = 1;" > if v.Length <> 0 then > v |> Array.map (fun (L(i,t)) -> > $"x->case{tag}.v{i} = v{i};") |> line' s_fun > line s_fun $"return x;" > line s_fun "}" > ) x.free_vars > ) > and ustack : _ -> UnionRecC = union_tmpl true > and uheap : _ -> UnionRecC = union_tmpl false > and carray : _ -> ArrayRecC = > carray' (fun _ s_typ s_fun x -> > let i, len_t, ptr_t = x.tag, prim size_t, tup_ty_tyvs x.tyvs > line s_typ "typedef struct {" > let _ = > let s_typ = indent s_typ > line s_typ "int refc;" > line s_typ $"{len_t} len;" > if ptr_t <> "void" then line s_typ $"{ptr_t} ptr[[]];" // > flexible array member > line s_typ (sprintf "} Array%i;" i) > > > let print_body p s_fun q = > let refcs = x.tyvs |> refc_change (fun i -> if 1 < > x.tyvs.Length then $"v.v{i}" else "v") q > if refcs.Length <> 0 then > p() > line s_fun (sprintf "for (%s i=0; i < len; i++){" len_t) > let _ = > let s_fun = indent s_fun > line s_fun $"{ptr_t} v = ptr[[i]];" > refcs |> line' s_fun > line s_fun "}" > > line s_fun (sprintf "static inline void > ArrayDecrefBody%i(Array%i * x){" i i) > let _ = > let s_fun = indent s_fun > print_body (fun () -> > line s_fun $"{len_t} len = x->len;" > line s_fun $"{ptr_t} * ptr = x->ptr;" > ) s_fun -1 > line s_fun "}" > > print_decref s_fun $"ArrayDecref{i}" $"Array{i}" > $"ArrayDecrefBody{i}" > > line s_fun (sprintf "Array%i * ArrayCreate%i(%s len, bool > init_at_zero){" i i len_t) > let _ = > let s_fun = indent s_fun > match ptr_t with > | "void" -> line s_fun $"{len_t} size = sizeof(Array{i});" > | _ -> line s_fun $"{len_t} size = sizeof(Array{i}) + > sizeof({ptr_t}) * len;" > line s_fun $"Array{i} * x = {malloc}(size);" > line s_fun "if (init_at_zero) { memset(x,0,size); }" > line s_fun "x->refc = 1;" > line s_fun "x->len = len;" > line s_fun "return x;" > line s_fun "}" > > line s_fun (sprintf "Array%i * ArrayLit%i(%s len, %s * ptr){" i > i len_t ptr_t) > let _ = > let s_fun = indent s_fun > line s_fun $"Array{i} * x = ArrayCreate{i}(len, false);" > if ptr_t <> "void" then > line s_fun $"memcpy(x->ptr, ptr, sizeof({ptr_t}) * > len);" > print_body (fun () -> ()) (indent s_fun) 1 > line s_fun "return x;" > line s_fun "}" > ) > and cstring : unit -> unit = > cstring' (fun _ s_typ s_fun () -> > let char = YPrim CharT > let size_t, ptr_t, tag = prim size_t, tyv char, (carray > char).tag > line s_typ $"typedef Array{tag} String;" > > line s_fun "static inline void StringDecref(String * x){" > line (indent s_fun) $"return ArrayDecref{tag}(x);" > line s_fun "}" > > line s_fun (sprintf "static inline String * StringLit(%s len, %s > * ptr){" size_t ptr_t) > line (indent s_fun) $"return ArrayLit{tag}(len, ptr);" > line s_fun "}" > ) > > match binds_last_dataC x |> data_term_vars |> term_vars_to_tysC with > | [[|YPrim Int32T|]] -> > import "stdbool.h" > import "stdint.h" > import "stdio.h" > import "stdlib.h" > > let main_defs = {text=System.Text.StringBuilder(); indent=0} > import "string.h" // for memcpy > > line main_defs (sprintf "%s main(){" (prim Int32T)) > binds_start [[||]] (indent main_defs) x > line main_defs "}" > > let program = System.Text.StringBuilder() > > globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> program.Append(x) |> ignore) > types |> Seq.iter (fun x -> program.Append(x) |> ignore) > functions |> Seq.iter (fun x -> program.Append(x) |> ignore) > program.Append(main_defs.text).ToString() > | _ -> > raise_codegen_error "The return type of main in the C backend should > be a 32-bit int." > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 5.51s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (572,39)-(572,45) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenCuda > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenCuda = > // open System > // open System.Text > open System.Collections.Generic > > let backend_nameCuda = "Cuda" > let max_tag = 255uy > > let is_stringCuda = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> > true | _ -> false > let sizeof_tyvCuda = function > | YPrim (Int64T | UInt64T | Float64T) -> 8 > | YPrim (Int32T | UInt32T | Float32T) -> 4 > | YPrim (Int16T | UInt16T) -> 2 > | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1 > | _ -> 8 > let order_args v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare > (sizeof_tyvCuda t') (sizeof_tyvCuda t)) > let lineCuda x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s > |> ignore > let lineCuda' x s = line x (String.concat " " s) > > type BindsReturnCuda = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let term_vars_to_tysCuda x = x |> Array.map (function WV(L(_,t)) -> t | WLit > x -> YPrim (lit_to_primitive_type x)) > let binds_last_dataCuda x = x |> Array.last |> function > TyLocalReturnData(x,_) | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> > raise_codegen_error "Compiler error: Cannot find the return data of the last > bind." > > type LayoutRecCuda = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type UnionRecCuda = {tag : int; free_vars : Map<int * string, TyV[[]]>; > is_heap : bool} > type MethodRecCuda = {tag : int; free_vars : TyV[[]]; range : Ty; body : > TypedBind[[]]; name : string option} > type ClosureRecCuda = {tag : int; free_vars : TyV[[]]; domain : Ty; range : > Ty; funtype : FunType; body : TypedBind[[]]} > type TupleRecCuda = {tag : int; tys : Ty [[]]} > type CFunRecCuda = {tag : int; domain : Ty; range : Ty; funtype : FunType} > > //let size_t = UInt32T > > // Replaces the invalid symbols in Spiral method names for the C backend. > let fix_method_name (x : string) = x.Replace(''','_') + "_" > > let unroll_pop (s : Stack<int>) = if s.Count > 0 then s.Pop() else -1 > let unroll_peek (s : Stack<int>) = if s.Count > 0 then s.Peek() else -1 > > let lit_stringCuda x = > let strb = System.Text.StringBuilder(String.length x + 2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > > let codegenCuda (default_env : DefaultEnv) (globals : _ ResizeArray, > fwd_dcls : _ ResizeArray, types : _ ResizeArray, functions : _ ResizeArray, > main_defs : _ ResizeArray) (env : PartEvalResult) = > let print show r = > let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0} > let s_typ = {text=System.Text.StringBuilder(); indent=0} > let s_fun = {text=System.Text.StringBuilder(); indent=0} > show s_typ_fwd s_typ s_fun r > let f (a : _ ResizeArray) (b : CodegenEnv) = > let text = b.text.ToString() > if text <> "" then a.Add(text) > f fwd_dcls s_typ_fwd > f types s_typ > f functions s_fun > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecCuda = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a > in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (1).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecCuda = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count; is_heap=a.Item.layout = > UHeap} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let tuple show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; tys=x} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let cfun' show = > let dict = Dictionary(HashIdentity.Structural) > let f (a : Ty, b : Ty, t : FunType) = {tag=dict.Count; domain=a; > range=b; funtype=t} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > > let tmp = > let mutable i = 0u > fun () -> let x = i in i <- i + 1u; x > > let global' = > let has_added = HashSet() > fun x -> if has_added.Add(x) then globals.Add x > > let import x = global' $"#include <{x}>" > let import' x = global' $"#include \"{x}\"" > > let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x > > let rec binds_start (s : CodegenEnv) (x : TypedBind [[]]) = binds > (Stack()) s BindsTailEnd x > and return_local s ret (x : string) = > match ret with > | [[||]] -> line s $"{x};" > | [[|L(i,_)|]] -> line s $"v{i} = {x};" > | ret -> > let tmp_i = tmp() > line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};" > Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret > |> lineCuda' s > and get_layout_rec lay a = > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> stack_mut a > and binds (unroll : Stack<int>) (s : CodegenEnv) (ret : BindsReturnCuda) > (stmts : TypedBind [[]]) = > let tup_destruct (a,b) = > Array.map2 (fun (L(i,_)) b -> > match b with > | WLit b -> $"v{i} = {lit b};" > | WV (L(i',_)) -> $"v{i} = v{i'};" > ) a b > Array.forall (fun x -> > match x with > | TyLet(d,trace,a) -> > try let d = data_free_vars d > let decl_vars () = Array.map (fun (L(i,t)) -> $"{tyv t} > v{i};") d > let layout_index layout (x'_i : int) (x' : TyV [[]]) = > match layout with > | Heap | HeapMutable -> Array.map2 (fun (L(i,t)) > (L(i',_)) -> $"{tyv t} & v{i} = v{x'_i}.base->v{i'};") d x' |> lineCuda' s > | StackMutable -> Array.map2 (fun (L(i,t)) (L(i',_)) > -> $"{tyv t} & v{i} = v{x'_i}.v{i'};") d x' |> lineCuda' s > match a with > | TyToLayout(a,YLayout(_,StackMutable) & b) -> > match d with > | [[|L(i,YLayout(_,StackMutable))|]] -> // For the > regular arrays. > let tag = (stack_mut b).tag > line s $"StackMut{tag} v{i}{{{args' a}}};" > true > | _ -> > raise_codegen_error "Compiler error: Expected a > stack mutable layout type." > | TyLayoutIndexAll(x) -> > match x with > | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay > a).free_vars |> layout_index lay i > | _ -> raise_codegen_error "Compiler error: Expected > the TyV in layout index to be a layout type." > true > | TyLayoutIndexByKey(x,key) -> > match x with > | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay > a).free_vars_by_key |> Map.pick (fun (_, k') v' -> if key = k' then Some v' else > None) |> layout_index lay i > | _ -> raise_codegen_error "Compiler error: Expected > the TyV in layout index by key to be a layout type." > true > | TyMacro a -> > let m = a |> List.map (function CMText x -> x | > CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> > String.concat "" > if m.StartsWith("#pragma") then > line s m > true > elif m = "break" then > line s "break;" > false > elif m.StartsWith("return") then > line s $"{m};" > false > else > let q = m.Split("\\v") > if q.Length = 1 then > decl_vars() |> lineCuda' s > return_local s d m > true > else > if d.Length = q.Length-1 then > let w = > System.Text.StringBuilder(m.Length+8) > let tag (L(i,_)) = i : int > Array.iteri (fun i v -> > w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d > > w.Append(q.[[d.Length]]).Append(';').ToString() |> line s > true > else > raise_codegen_error "The special \\v > macro requires the same number of free vars in its binding as there are \\v in > the code." > | TyArrayLiteral(a,b') -> > let inits = List.map tup_data b' |> String.concat > "," |> sprintf "{%s}" > match d with > | [[|L(i,YArray t)|]] -> // For the regular arrays. > line s $"%s{tup_ty t} v{i}[[]] = %s{inits};" > true > | _ -> > raise_codegen_error "Compiler error: Expected a > single variable on the left side of an array literal op." > | TyArrayCreate(a,b) -> > match d with > | [[|L(i,YArray t)|]] -> > match tup_ty t with > | "void" -> line s "/* void array create */" > | t -> line s $"{t} v{i}[[{tup_data b}]];" > true > | _ -> raise_codegen_error "Compiler error: Expected > a single variable on the left side of an array create op." > | TyJoinPoint(JPClosure(a,b),b') -> > match d with > | [[|L(i,_)|]] -> > let x = closure (a,b) > match x.funtype with > | FT_Pointer -> > let y = cfun (x.domain,x.range,x.funtype) > line s $"Fun{y.tag} v{i} = > FunPointerMethod{x.tag};" > | FT_Vanilla -> > let args = args b' > line s $"Closure{x.tag} v{i}{{{args}}};" > | FT_Closure -> > let y = cfun (x.domain,x.range,x.funtype) > let args = args b' > line s $"Fun{y.tag} v{i}{{new > Closure{x.tag}{{{args}}}}};" > true > | _ -> raise_codegen_error "Compiler error: Expected > a single variable on the left side of a closure join point." > | _ -> > decl_vars() |> lineCuda' s > op unroll s (BindsLocal d) a > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op unroll s ret a > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> lineCuda' s (tup_destruct > (l,data_term_vars d)) > | BindsTailEnd -> line s $"return {tup_data d};" > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > ) stmts > |> ignore > and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a > and args' b = data_term_vars b |> Array.map show_w |> String.concat ", " > and tup_term_vars x = > let args = Array.map show_w x |> String.concat ", " > if 1 < x.Length then sprintf "Tuple%i{%s}" (tup > (term_vars_to_tysCuda x)).tag args else args > and tup_data x = tup_term_vars (data_term_vars x) > and tup_ty_tys = function > | [[||]] -> "void" > | [[|x|]] -> tyv x > | x -> sprintf "Tuple%i" (tup x).tag > and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x) > and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UStack -> sprintf "Union%i" (unions a).tag > | UHeap -> sprintf "sptr<Union%i>" (unions a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "sptr<Heap%i>" (heap a).tag > | HeapMutable -> sprintf "sptr<Mut%i>" (mut a).tag > | StackMutable -> sprintf "StackMut%i &" (stack_mut a).tag > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameCuda > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected > a record with the '{backend_nameCuda}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty > a | TypeLit a -> type_lit a) |> String.concat "" > | YPrim a -> prim a > | YArray a -> sprintf "%s *" (tup_ty a) > | YFun(a,b,t) -> $"Fun%i{(cfun (a,b,t)).tag}" > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error (sprintf "Compiler error: Type not > supported in the codegen.\nGot: %A" a) > and prim = function > | Int8T -> "char" > | Int16T -> "short" > | Int32T -> "int" > | Int64T -> "long long" > | UInt8T -> "unsigned char" > | UInt16T -> "unsigned short" > | UInt32T -> "unsigned int" > | UInt64T -> "unsigned long long" > | Float32T -> "float" > | Float64T -> "double" > | BoolT -> "bool" // part of c++ standard > | CharT -> "char" > | StringT -> "const char *" > and lit = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%ill" x > | LitUInt8 x -> sprintf "%iu" x > | LitUInt16 x -> sprintf "%iu" x > | LitUInt32 x -> sprintf "%iu" x > | LitUInt64 x -> sprintf "%iull" x > | LitFloat32 x -> > if x = infinityf then "1.0f / 0.0f" > elif x = -infinityf then "-1.0f / 0.0f" > elif System.Single.IsNaN x then "0.0f / 0.0f" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "1.0 / 0.0" > elif x = -infinity then "-1.0 / 0.0" > elif System.Double.IsNaN x then "0.0 / 0.0" > else x.ToString("R") |> add_dec_point > | LitString x -> lit_stringCuda x > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" // true and false are > defined in stddef.h > and type_lit = function > | YLit x -> lit x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal > in the macro." > and op (unroll : Stack<int>)s (ret : BindsReturnCuda) a = > let binds a b = binds unroll a b > let return' (x : string) = > match ret with > | BindsLocal ret -> return_local s ret x > | BindsTailEnd -> line s $"return {x};" > let jp (a,b') = > let args = args b' > match a with > | JPMethod(a,b) -> > let x = method (a,b) > let method_name = Option.defaultValue "method_" x.name > $"{method_name}{x.tag}({args})" > | JPClosure(a,b) -> > let x = closure (a,b) > match x.funtype with > | FT_Vanilla -> raise_codegen_error "Compiler error: The > vanilla function case should have been blocked elsewhere." > | FT_Pointer -> $"FunPointerMethod{x.tag}" > | FT_Closure -> $"csptr<ClosureBase{x.tag}>{{new > Closure{x.tag}{{{args}}}}}" > match a with > | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken > care of in the `binds` function." > | TyIf(cond,tr,fl) -> > line s (sprintf "if (%s){" (tup_data cond)) > binds (indent s) ret tr > line s "} else {" > binds (indent s) ret fl > line s "}" > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Cuda > backend does not support the nesting of other backends." > | TyWhile(a,b) -> > let cond = > match a with > | JPMethod(a,b),b' -> sprintf "while_method_%i(%s)" > (method_while (a,b)).tag (args b') > | _ -> raise_codegen_error "Expected a regular method rather > than closure create in the while conditional." > match unroll_peek unroll with > | -1 -> () > | 0 -> line s $"#pragma unroll" > | i -> line s $"#pragma unroll %i{i}" > line s (sprintf "while (%s){" cond) > binds (indent s) (BindsLocal [[||]]) b > line s "}" > | TyDo a | TyIndent a -> > binds s ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > line s (sprintf "switch (v%i) {" v_i) > let _ = > let s = indent s > Array.iteri (fun i x -> > line s (sprintf "case %i: {" i) > binds (indent s) ret x > line (indent s) "break;" > line s "}" > ) on_succ > line s "default: {" > binds (indent s) ret on_fail > line s "}" > line s "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > let acs = match x.Item.layout with UHeap -> ".base->" | UStack > -> "." > let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag" > List.pairwise is > |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == > v{i'}{acs}tag") > |> String.concat " && " > |> function "" -> head | x -> $"{x} ? {head} : {max_tag}" > |> sprintf "switch (%s) {" |> line s > let _ = > let s = indent s > Map.iter (fun k (a,b) -> > let union_i = case_tags.[[k]] > line s (sprintf "case %i: { // %s" union_i k) > List.iter2 (fun (L(data_i,_)) a -> > let a, s = data_free_vars a, indent s > let qs = ResizeArray(a.Length) > Array.iteri (fun field_i (L(v_i,t) as v) -> > qs.Add $"{tyv t} v{v_i} = > v{data_i}{acs}case{union_i}.v{field_i};" > ) a > lineCuda' s qs > ) is a > binds (indent s) ret b > line (indent s) "break;" > line s "}" > ) on_succs > line s "default: {" > let _ = > let s = indent s > match on_fail with > | Some b -> binds s ret b > | None -> line s "assert(\"Invalid tag.\" && false); > __trap();" > line s "}" > line s "}" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = args' b > let tag = (unions c').tag > match c.layout with > | UHeap -> $"sptr<Union{tag}>{{new > Union{tag}{{Union{tag}_{i}{{{vars}}}}}}}" > | UStack -> $"Union{tag}{{Union{tag}_{i}{{{vars}}}}}" > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> > let tag = (heap b).tag > $"sptr<Heap{tag}>{{new Heap{tag}{{{args' a}}}}}" > | HeapMutable -> > let tag = (mut b).tag > $"sptr<Mut{tag}>{{new Mut{tag}{{{args' a}}}}}" > | StackMutable -> raise_codegen_error "The Cuda backend > doesn't support stack mutable layout types." > | _ -> raise_codegen_error "Compiler error: Expected a layout > type (2)." > |> return' > | TyLayoutIndexAll(x) -> raise_codegen_error "Compiler error: > TyLayoutIndexAll should have been taken care of in TyLet." > | TyLayoutIndexByKey(x,key) -> raise_codegen_error "Compiler error: > TyLayoutIndexByKey should have been taken care of in TyLet." > | TyLayoutMutableSet(L(i,t),b,c) -> > match t with > | YLayout(_,lay) -> > match lay with > | HeapMutable -> > let a = > List.fold > (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_, k') v' > -> if k = k' then Some v' else None) > | _ -> raise_codegen_error "Compiler error: > Expected a record.") > (mut t).data b > Array.map2 (fun (L(i',_)) b -> $"v{i}.base->v{i'} = > {show_w b};") (data_free_vars a) (data_term_vars c) > | StackMutable -> > let a = List.fold (fun s k -> match s with DRecord l -> > l |> Map.pick (fun (_, k') v' -> if k = k' then Some v' else None) | _ -> > raise_codegen_error "Compiler error: Expected a record.") (stack_mut t).data b > Array.map2 (fun (L(i',_)) b -> $"v{i}.v{i'} = {show_w > b};") (data_free_vars a) (data_term_vars c) > | Heap -> raise_codegen_error "Compiler error (1): > TyLayoutMutableSet should only be HeapMutable or StackMutable." > | _ -> raise_codegen_error "Compiler error (2): > TyLayoutMutableSet should only be HeapMutable or StackMutable." > |> String.concat " " |> line s > | TyArrayLiteral(a,b') -> raise_codegen_error "Compiler error: > TyArrayLiteral should have been taken care of in TyLet." > | TyArrayCreate(a,b) -> raise_codegen_error "Compiler error: > TyArrayCreate should have been taken care of in TyLet." > | TyFailwith(a,b) -> > let string_in_op = function DLit (LitString b) -> lit_stringCuda > b | b -> raise_codegen_error "In the Cuda backend, the exception string must be > a literal." > let fmt = @"%s\n" > line s $"printf(\"{fmt}\", {string_in_op b});" > line s "__trap();" // TODO: Print out the error traces as well. > | TyConv(a,b) -> return' $"({tyv a}){tup_data b}" > | TyApply(L(i,_),b) -> > let rec loop = function > | DPair(a,b) -> tup_data a :: loop b > | a -> [[tup_data a]] > let args = loop b |> List.filter ((<>) "") |> String.concat ", " > $"v{i}({args})" |> return' > | TyArrayLength(_,b) -> raise_codegen_error "Array length is not > supported in the Cuda C++ backend as they are bare pointers." > | TyStringLength(_,b) -> raise_codegen_error "String length is not > supported in the Cuda C++ backend." > | TySizeOf t -> return' $"sizeof({tup_ty t})" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(PragmaUnrollPush,[[DLit (LitInt32 x)]]) -> unroll.Push(x); > line s $"// Pushing the loop unrolling to: {x}" > | TyOp(PragmaUnrollPop,[[]]) -> line s $"// Poping the loop > unrolling to: {unroll_pop unroll}" > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is > not supported natively in the C backend. Use a library implementation instead." > | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> > match tup_ty t with > | "void" -> "/* void array index */" > | _ -> sprintf "%s[[%s]]" (tup_data a) (tup_data b) > | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> > let a',b',c' = tup_data a, tup_data b, tup_data c > match c' with > | "" -> "/* void array set */" > | _ -> $"{a'}[[{b'}]] = {c'}" > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] | NEQ, [[a;b]] | GT, [[a;b]] | GTE, [[a;b]] when > is_stringCuda a -> raise_codegen_error "String comparison operations are not > supported in the Cuda C++ backend." > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> sprintf "log(%s)" (tup_data x) > | Exp, [[x]] -> sprintf "exp(%s)" (tup_data x) > | Tanh, [[x]] -> sprintf "tanh(%s)" (tup_data x) > | Sqrt, [[x]] -> sprintf "sqrt(%s)" (tup_data x) > | Sin, [[x]] -> sprintf "sin(%s)" (tup_data x) > | Cos, [[x]] -> sprintf "cos(%s)" (tup_data x) > | NanIs, [[x]] -> sprintf "isnan(%s)" (tup_data x) > | Printf, [[fmt;str]] -> > match args' str with > | "" -> sprintf "printf(%s)" (tup_data fmt) > | str -> sprintf "printf(%s,%s)" (tup_data fmt) str > | UnionTag, [[DV(L(i,YUnion l)) as x]] -> > match l.Item.layout with > | UHeap -> ".base->tag" > | UStack -> ".tag" > |> sprintf "v%i%s" i > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and print_ordered_args s v = // Unlike C# for example, C keeps the > struct fields in input order. To reduce padding, it is best to order the fields > from largest to smallest. > order_args v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} v{i};") > and method_template is_while : _ -> MethodRecCuda = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a; name=Option.map fix_method_name name} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun s_fwd s_typ s_fun x -> > let ret_ty = tup_ty x.range > let fun_name = Option.defaultValue (if is_while then > "while_method_" else "method_") x.name > let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv > x} v{i}") |> String.concat ", " > let inline_ = > if is_while then "inline " > else > line s_fwd $"__device__ {ret_ty} > {fun_name}{x.tag}({args});" > if fun_name.StartsWith "noinline" then "__noinline__ " > else "" > line s_fun $"__device__ {inline_}{ret_ty} > {fun_name}{x.tag}({args}){{" > binds_start (indent s_fun) x.body > line s_fun "}" > ) > and method : _ -> MethodRecCuda = method_template false > and method_while : _ -> MethodRecCuda = method_template true > and closure_args domain count_start = > let rec loop = function > | YPair(a,b) -> a :: loop b > | a -> [[a]] > let mutable count = count_start > let rename x = Array.map (fun (L(i,t)) -> let x = L(count,t) in > count <- count+1; x) x > let mutable i = 0 > loop domain |> List.choose (fun x -> > let n = env.ty_to_data x |> data_free_vars > let x = if n.Length <> 0 then Some(i, tup_ty_tyvs n, n |> > rename) else None > i <- i+1 > x > ) > and closure : _ -> ClosureRecCuda = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,t) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; domain=domain; > range=range; body=body; free_vars=rdata_free_vars args; funtype=t} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > let closure_args = closure_args x.domain x.free_vars.Length > let args = closure_args |> List.map (fun (i,ty,_) -> $"{ty} > tup{i}") |> String.concat ", " > let print_body s_fun = > let s_fun = indent s_fun > x.free_vars |> Array.map (fun (L(i,t)) -> > $"{tyv t} & v{i} = this->v{i};" > ) |> String.concat " " |> line s_fun > closure_args |> List.map (fun (i'',_,vars) -> > Array.mapi (fun i' (L(i,t)) -> > if vars.Length <> 1 then $"{tyv t} v{i} = > tup{i''}.v{i'};" > else $"{tyv t} v{i} = tup{i''};" > ) vars > |> String.concat " " > ) |> String.concat " " |> line s_fun > binds_start s_fun x.body > match x.funtype with > | FT_Pointer -> > $"__device__ {range} FunPointerMethod{i}({args}){{" |> line > s_fun > print_body s_fun > line s_fun "}" > | FT_Vanilla | FT_Closure -> > match x.funtype with > | FT_Pointer -> raise_codegen_error "Compiler error: The > pointer case have been taken care of (1)." > | FT_Closure -> > let i' = (cfun (x.domain,x.range,x.funtype)).tag > line s_typ $"struct Closure{i} : public ClosureBase{i'} > {{" > | FT_Vanilla -> > line s_typ $"struct Closure{i} {{" > let () = > let s_typ = indent s_typ > let () = // free vars in the environment > print_ordered_args s_typ x.free_vars > let () = // operator() > match x.funtype with > | FT_Pointer -> raise_codegen_error "Compiler error: > The pointer case have been taken care of (2)." > | FT_Vanilla -> line s_typ $"__device__ {range} > operator()({args}){{" > | FT_Closure -> line s_typ $"__device__ {range} > operator()({args}) override {{" > print_body s_typ > line s_typ "}" > let () = // constructor > match x.free_vars with > | [[||]] -> () > | _ -> > let constructor_args = > x.free_vars > |> Array.map (fun (L(i,t)) -> $"{tyv t} > _v{i}") > |> String.concat ", " > let initializer_args = > x.free_vars > |> Array.map (fun (L(i,t)) -> > $"v{i}(_v{i})") > |> String.concat ", " > line s_typ $"__device__ > Closure{i}({constructor_args}) : {initializer_args} {{ }}" > let () = // destructor > match x.funtype with > | FT_Pointer | FT_Vanilla -> () > | FT_Closure -> line s_typ $"__device__ > ~Closure{i}() override = default;" > () > line s_typ "};" > ) > and cfun : _ -> CFunRecCuda = > cfun' (fun s_fwd s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > let domain_args_ty = closure_args x.domain 0 |> List.map (fun > (_,ty,_) -> ty) |> String.concat ", " > match x.funtype with > | FT_Vanilla -> raise_codegen_error "Regular functions do not > have a composable type in the Cuda backend. Consider explicitly converting them > to either closures or pointers using `to_closure` or `to_fptr` if you want to > pass them through boundaries." > | FT_Pointer -> line s_fwd $"typedef {range} (* > Fun{i})({domain_args_ty});" > | FT_Closure -> > line s_fwd $"struct ClosureBase{i} {{ int refc{{0}}; > __device__ virtual {range} operator()({domain_args_ty}) = 0; __device__ virtual > ~ClosureBase{i}() = default; }};" > line s_fwd $"typedef csptr<ClosureBase{i}> Fun{i};" > ) > and tup : _ -> TupleRecCuda = > tuple (fun s_fwd s_typ s_fun x -> > let name = sprintf "Tuple%i" x.tag > line s_fwd $"struct {name};" > line s_typ $"struct {name} {{" > x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args > (indent s_typ) > let concat x = String.concat ", " x > let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} t{i}") > let con_init = x.tys |> Array.mapi (fun i x -> $"v{i}(t{i})") > if args.Length <> 0 then > line (indent s_typ) $"__device__ {name}() = default;" > line (indent s_typ) $"__device__ {name}({concat args}) : > {concat con_init} {{}}" > line s_typ "};" > ) > and unions : _ -> UnionRecCuda = > let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x > |> ignore > union (fun s_fwd s_typ s_fun x -> > let i = x.tag > line s_fwd $"struct Union{i};" // Forward declaration for the > union. > map_iteri (fun tag k v -> // The individual union cases. > line s_typ $"struct Union{i}_{tag} {{ // {k}" > // The free vars in the env. > print_ordered_args (indent s_typ) v > let () = // constructors > let s_typ = indent s_typ > let concat x = String.concat ", " x > let args = v |> Array.map (fun (L(i,x)) -> $"{tyv x} > t{i}") > let con_init = v |> Array.map (fun (L(i,x)) -> > $"v{i}(t{i})") > if v.Length <> 0 then > line s_typ $"__device__ Union{i}_{tag}({concat > args}) : {concat con_init} {{}}" > line s_typ $"__device__ Union{i}_{tag}() = delete;" > line s_typ "};" > ) x.free_vars > > line s_typ $"struct Union{i} {{" // The union definition. > let _ = // Union cases inside the union. > let s_typ = indent s_typ > line s_typ $"union {{" > let _ = > let s_typ = indent s_typ > map_iteri (fun tag (_,k) v -> line s_typ > $"Union{i}_{tag} case{tag}; // {k}") x.free_vars > line s_typ "};" > > if x.is_heap then line s_typ "int refc{0};" > if x.free_vars.Count > int max_tag then raise_codegen_error > $"Too many union cases. They should not be more than {max_tag}." > line s_typ $"unsigned char tag{{{max_tag}}};" > line s_typ $"__device__ Union{i}() {{}}" // default > constructor, the refc and tag have def value so we don't have to do anything > here. > > map_iteri (fun tag k v -> // The constructors for all the > union cases. > line s_typ $"__device__ Union{i}(Union{i}_{tag} t) : > tag({tag}), case{tag}(t) {{}} // {k}" > ) x.free_vars > > line s_typ $"__device__ Union{i}(Union{i} & x) : tag(x.tag) > {{" // copy constructor > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // copy constructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: new (&this->case{tag}) > Union{i}_{tag}(x.case{tag}); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "}" > line s_typ $"__device__ Union{i}(Union{i} && x) : tag(x.tag) > {{" // move constructor > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // move constructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: new (&this->case{tag}) > Union{i}_{tag}(std::move(x.case{tag})); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "}" > line s_typ $"__device__ Union{i} & operator=(Union{i} & x) > {{" // copy assignment operator > let () = > let s_typ = indent s_typ > line s_typ "if (this->tag == x.tag) {" > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // copy assignment cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: this->case{tag} = > x.case{tag}; break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "} else {" > let () = > let s_typ = indent s_typ > line s_typ $"this->~Union{i}();" > line s_typ $"new (this) Union{i}{{x}};" > line s_typ "}" > line s_typ "return *this;" > line s_typ "}" > line s_typ $"__device__ Union{i} & operator=(Union{i} && x) > {{" // move assignment operator > let () = > let s_typ = indent s_typ > line s_typ "if (this->tag == x.tag) {" > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // move assignment cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: this->case{tag} = > std::move(x.case{tag}); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "} else {" > let () = > let s_typ = indent s_typ > line s_typ $"this->~Union{i}();" > line s_typ $"new (this) Union{i}{{std::move(x)}};" > line s_typ "}" > line s_typ "return *this;" > line s_typ "}" > line s_typ $"__device__ ~Union{i}() {{" > let () = // destructor > let s_typ = indent s_typ > line s_typ "switch(this->tag){" > let () = // destructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: > this->case{tag}.~Union{i}_{tag}(); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ $"this->tag = {max_tag};" > line s_typ "}" > line s_typ "};" > ) > and layout_tmpl is_heap name : _ -> LayoutRecCuda = > layout (fun s_fwd s_typ s_fun (x : LayoutRecCuda) -> > let name = sprintf "%s%i" name x.tag > line s_fwd $"struct {name};" > line s_typ $"struct {name} {{" > let () = > let s_typ = indent s_typ > if is_heap then line s_typ "int refc{0};" > x.free_vars |> print_ordered_args s_typ > let concat x = String.concat ", " x > let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv > x} t{i}") > let con_init = x.free_vars |> Array.map (fun (L(i,x)) -> > $"v{i}(t{i})") > if args.Length <> 0 then > line s_typ $"__device__ {name}() = default;" > line s_typ $"__device__ {name}({concat args}) : {concat > con_init} {{}}" > line s_typ "};" > ) > and heap : _ -> LayoutRecCuda = layout_tmpl true "Heap" > and mut : _ -> LayoutRecCuda = layout_tmpl true "Mut" > and stack_mut : _ -> LayoutRecCuda = layout_tmpl false "StackMut" > > fun vs (x : TypedBind [[]]) -> > let ret_ty = > let er() = raise_codegen_error "The return type of the > __global__ kernel in the Cuda backend should be a void type or a record of type > {cluster_dims : {x : int; y : int; z : int}}." > match binds_last_dataCuda x with > | DRecord m when m.Count = 1 -> > match Map.tryPick (fun (_, k) v -> if k = "cluster_dims" > then Some v else None) m with > | Some(DRecord m) when m.Count = 3 -> > match > Map.tryPick (fun (_, k) v -> if k = "x" then Some v > else None) m, > Map.tryPick (fun (_, k) v -> if k = "y" then Some v > else None) m, > Map.tryPick (fun (_, k) v -> if k = "z" then Some v > else None) m > with > | Some(DSymbol x), Some(DSymbol y), Some(DSymbol z) -> > $"void __cluster_dims__({x},{y},{z})" > | Some(DV _), _, _ > | _, Some(DV _), _ > | _, _, Some(DV _) -> raise_codegen_error "All the > variables have to be known at compile time." > | _ -> er() > | _ -> er() > | DB -> "void" > | _ -> er() > let main_defs' = {text=System.Text.StringBuilder(); indent=0} > let args = vs |> Array.mapi (fun i (L(_,x)) -> $"{tyv x} v{i}") |> > String.concat ", " > line main_defs' $"extern \"C\" __global__ {ret_ty} > entry%i{main_defs.Count}(%s{args}) {{" > binds_start (indent main_defs') x > line main_defs' "}" > main_defs.Add(main_defs'.text.ToString()) > > global' $"using default_int = {prim default_env.default_int};" > global' $"using default_uint = {prim default_env.default_uint};" > global' (System.IO.File.ReadAllText(System.IO.Path.Join( > // AppDomain.CurrentDomain.BaseDirectory, > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > "reference_counting.cuh" > ))) > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 3.90s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (606,39)-(606,45) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenPython > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenPython = > // open System > // open System.Text > open System.Collections.Generic > > let backend_namePython = "Python" > > let litPython = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%i" x > | LitUInt8 x -> sprintf "%i" x > | LitUInt16 x -> sprintf "%i" x > | LitUInt32 x -> sprintf "%i" x > | LitUInt64 x -> sprintf "%i" x > | LitFloat32 x -> > if x = infinityf then "float('inf')" > elif x = -infinityf then "float('-inf')" > elif System.Single.IsNaN x then "float()" > else x.ToString("R") |> add_dec_point > | LitFloat64 x -> > if x = infinity then "float('inf')" > elif x = -infinity then "float('-inf')" > elif System.Double.IsNaN x then "float()" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | ''' -> @"\'" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "True" else "False" > > let type_litPython = function > | YLit x -> litPython x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in > the macro." > > let show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> litPython a > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let primPython x = show_primt x > let cupy_ty x = > match x with > | [[|L(_,x)|]] -> > match x with > | YPrim x -> > match x with > | Int8T -> "cp.int8" > | Int16T -> "cp.int16" > | Int32T -> "cp.int32" > | Int64T -> "cp.int64" > | UInt8T -> "cp.uint8" > | UInt16T -> "cp.uint16" > | UInt32T -> "cp.uint32" > | UInt64T -> "cp.uint64" > | Float32T -> "cp.float32" > | Float64T -> "cp.float64" > | BoolT -> "cp.bool_" > | _ -> "object" > | _ -> "object" > | _ -> "object" > > type UnionRecPython = {tag : int; free_vars : Map<int * string, TyV[[]]>} > type LayoutRecPython = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type MethodRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; > body : TypedBind[[]]} > type ClosureRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; > domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]} > > type BindsReturnPython = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let linePython x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine > s |> ignore > > let codegen' backend_handler (env : PartEvalResult) (x : TypedBind [[]]) = > let fwd_dcls = ResizeArray() > let types = ResizeArray() > let functions = ResizeArray() > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let import x = global' $"import {x}" > let from x = global' $"from {x}" > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecPython = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecPython = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a > in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (5).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print true show r > r > > let jp is_type f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print is_type show r > r > > let cupy_ty x = env.ty_to_data x |> data_free_vars |> cupy_ty > let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind > [[]]) = binds (refc_prepass Set.empty (Set args) x).g_decr s BindsTailEnd x > and binds g_decr (s : CodegenEnv) (ret : BindsReturnPython) (stmts : > TypedBind [[]]) = > let s_len = s.text.Length > let tup_destruct (a,b) = > if 0 < Array.length a then > let a = args a > let b = Array.map show_w (data_term_vars b) |> String.concat > ", " > sprintf "%s = %s" a b |> line s > Array.iter (fun x -> > let _ = > let f (g : Dictionary<_,_>) = match g.TryGetValue(x) with > true, x -> Seq.toArray x | _ -> [[||]] > match args (f g_decr) with "" -> () | x -> sprintf "del %s" > x |> line s > match x with > | TyLet(d,trace,a) -> > try op g_decr s (BindsLocal (data_free_vars d)) a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op g_decr s ret a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> tup_destruct (l, d) > | BindsTailEnd -> line s $"return {tup_data' d}" > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > ) stmts > if s.text.Length = s_len then line s "pass" > and tup_data' x = > match Array.map show_w (data_term_vars x) with > | [[||]] -> "" > | [[|x|]] -> x > | args -> String.concat ", " args > and tup_data x = > match Array.map show_w (data_term_vars x) with > | [[||]] -> "None" > | [[|x|]] -> x > | args -> sprintf "(%s)" (String.concat ", " args) > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UHeap -> sprintf "UH%i" (uheap a).tag > | UStack -> sprintf "US%i" (ustack a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The > Python backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = > backend_namePython then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected > a record with the '{backend_namePython}' field." > | YMacro a -> > a > |> List.map (function > | Text a -> a > | Type a -> tup_ty a > | TypeLit a -> type_litPython a > ) > |> String.concat "" > | YPrim a -> primPython a > | YArray a -> "(cp if cuda else np).ndarray" > | YFun(a,b,FT_Vanilla) -> > let a = env.ty_to_data a |> data_free_vars |> Array.map (fun > (L(_,t)) -> tyv t) |> String.concat ", " > $"Callable[[[[{a}]], {tup_ty b}]]" > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error $"Complier error: Type not supported in > the codegen.\nGot: %A{a}" > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,t)) > -> tyv t) with > | [[||]] -> "None" > | [[|x|]] -> x > | x -> String.concat ", " x |> sprintf "Tuple[[%s]]" > and op g_decr s (ret : BindsReturnPython) a = > let return' (x : string) = > match ret with > | BindsTailEnd -> line s $"return {x}" > | BindsLocal ret -> line s (if ret.Length = 0 then x else > sprintf "%s = %s" (args ret) x) > let jp (a,b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag > args > | JPClosure(a,b) -> sprintf "Closure%i(%s)" (closure (a,b)).tag > args > let layout_index i x' = > x' |> Array.map (fun (L(i',_)) -> $"v{i}.v{i'}") > |> String.concat ", " > |> return' > > match a with > | TySizeOf t -> raise_codegen_error $"The following type in `sizeof` > is not supported in the Python back end.\nGot: {show_ty t}" > | TyMacro a -> > // System.Console.WriteLine $"CodegenPython.TyMacro / a: %A{a}" > a > |> List.map (function > | CMText x when x |> SpiralSm.starts_with "$\"" -> > let x = x |> SpiralSm.replace "%A{" "{" > $"f\"{x.[[2..]]}" > | CMText x -> x > | CMTerm x -> tup_data x > | CMType x -> tup_ty x > | CMTypeLit a -> type_litPython a > ) > |> String.concat "" > |> return' > | TyIf(cond,tr,fl) -> > line s (sprintf "if %s:" (tup_data cond)) > binds g_decr (indent s) ret tr > line s "else:" > binds g_decr (indent s) ret fl > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(a,b,c) -> return' (backend_handler (a,b,c)) > | TyWhile(a,b) -> > line s (sprintf "while %s:" (jp a)) > binds g_decr (indent s) (BindsLocal [[||]]) b > | TyDo a -> > binds g_decr s ret a > | TyIndent a -> > binds g_decr (indent s) ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > Array.iteri (fun i x -> > if i = 0 then line s $"if v{v_i} == {i}:" > else line s $"elif v{v_i} == {i}:" > binds g_decr (indent s) ret x > ) on_succ > line s "else:" > binds g_decr (indent s) ret on_fail > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > line s (sprintf "match %s:" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let s = indent s > let prefix = > match x.Item.layout with > | UHeap -> sprintf "UH%i" (uheap x).tag > | UStack -> sprintf "US%i" (ustack x).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > let x = data_free_vars a > let g_decr' = get_default g_decr (Array.head b) (fun > () -> Set.empty) > let x,g_decr' = Array.mapFold (fun g_decr (L(i,_) as > v) -> if Set.contains v g_decr then "_", Set.remove v g_decr else sprintf "v%i" > i, g_decr) g_decr' x > g_decr.[[Array.head b]] <- g_decr' > sprintf "%s_%i(%s)" prefix i (String.concat ", " x) > ) > |> String.concat ", " > line s (sprintf "case %s: # %s" cases k) > binds g_decr (indent s) ret b > ) on_succs > line s "case t:" > match on_fail with > | Some b -> binds g_decr (indent s) ret b > | None -> line (indent s) "raise Exception(f'Pattern matching > miss. Got: {t}')" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = tup_data' b > match c.layout with > | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars > | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> sprintf "Heap%i(%s)" (heap b).tag (tup_data' a) > | HeapMutable -> sprintf "Mut%i(%s)" (mut b).tag (tup_data' > a) > | StackMutable -> raise_codegen_error "The Python backend > doesn't support stack mutable layout types." > | _ -> raise_codegen_error "Compiler error: Expected a layout > type (6)." > |> return' > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The Python backend > doesn't support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The Python backend > doesn't support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k = k' then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a > record.") (mut t).data b > Array.iter2 (fun (L(i',_)) b -> line s $"v{i}.v{i'} = {show_w > b}") (data_free_vars a) (data_term_vars c) > | TyArrayLiteral(a,b) -> return' <| sprintf "(cp if cuda else > np).array([[%s]],dtype=%s)" (List.map tup_data' b |> String.concat ", ") > (cupy_ty a) > | TyArrayCreate(a,b) -> return' $"(cp if cuda else > np).empty({tup_data b},dtype={cupy_ty a})" > | TyFailwith(a,b) -> line s $"raise Exception({tup_data' b})" > | TyConv(a,b) -> return' $"{tyv a}({tup_data b})" > | TyApply(L(i,_),b) -> return' $"v{i}({tup_data' b})" > | TyArrayLength(a,b) -> return' $"{tup_data b}.__len__()" > | TyStringLength(a,b) -> return' $"len({tup_data b})" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | ToPythonRecord,[[DRecord x]] -> Map.foldBack (fun k v l -> > $"'{k}': {tup_data v}" :: l) x [[]] |> String.concat ", " |> sprintf "{%s}" > | ToPythonNamedTuple,[[n;DRecord x]] -> > import "collections" > let field_names = Map.foldBack (fun k v l -> $"'{k}'" :: l) > x [[]] |> String.concat ", " > let args = Map.foldBack (fun k v l -> tup_data v :: l) x > [[]] |> String.concat ", " > $"collections.namedtuple({tup_data > n},[[{field_names}]])({args})" > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> sprintf "%s[[%s:%s]]" (tup_data a) > (tup_data b) (tup_data c) > | ArrayIndex, [[a;b]] -> sprintf "%s[[%s]].item()" (tup_data a) > (tup_data b) > | ArrayIndexSet, [[a;b;c]] -> > match tup_data' c with > | "" -> "pass # void array set" > | c -> sprintf "%s[[%s]] = %s" (tup_data a) (tup_data b) c > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[(DV(L(_,YPrim (Float32T | Float64T))) | DLit(LitFloat32 > _ | LitFloat64 _)) & a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s // %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s and %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s or %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> import "math"; sprintf "math.log(%s)" (tup_data > x) > | Exp, [[x]] -> import "math"; sprintf "math.exp(%s)" (tup_data > x) > | Tanh, [[x]] -> import "math"; sprintf "math.tanh(%s)" > (tup_data x) > | Sqrt, [[x]] -> import "math"; sprintf "math.sqrt(%s)" > (tup_data x) > | Sin, [[x]] -> import "math"; sprintf "math.sin(%s)" (tup_data > x) > | Cos, [[x]] -> import "math"; sprintf "math.cos(%s)" (tup_data > x) > | NanIs, [[x]] -> import "math"; sprintf "math.isnan(%s)" > (tup_data x) > | UnionTag, [[DUnion(_,l) | DV(L(_,YUnion l)) as x]] -> sprintf > "%s.tag" (tup_data x) > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and uheap : _ -> UnionRecPython = union (fun s x -> > let cases = Array.init x.free_vars.Count (fun i -> > $"\"UH{x.tag}_{i}\"") |> function [[|x|]] -> x | x -> x |> String.concat ", " |> > sprintf "Union[[%s]]" > fwd_dcls.Add $"UH{x.tag} = {cases}" > let mutable i = 0 > x.free_vars |> Map.iter (fun k a -> > line s $"class UH{x.tag}_{i}(NamedTuple): # {k}" > let s = indent s > a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}") > line s $"tag = {i}" > i <- i+1 > ) > ) > and ustack : _ -> UnionRecPython = union (fun s x -> > let mutable i = 0 > x.free_vars |> Map.iter (fun k a -> > line s $"class US{x.tag}_{i}(NamedTuple): # {k}" > let s = indent s > a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}") > line s $"tag = {i}" > i <- i+1 > ) > let cases = Array.init x.free_vars.Count (fun i -> $"US{x.tag}_{i}") > |> function [[|x|]] -> x | x -> x |> String.concat ", " |> sprintf "Union[[%s]]" > line s $"US{x.tag} = {cases}" > ) > and heap : _ -> LayoutRecPython = layout (fun s x -> > line s $"class Heap{x.tag}(NamedTuple):" > let s = indent s > if x.free_vars.Length = 0 then line s "pass" > else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv > t}") > ) > and mut : _ -> LayoutRecPython = layout (fun s x -> > line s "@dataclass" > line s $"class Mut{x.tag}:" > let s = indent s > if x.free_vars.Length = 0 then line s "pass" > else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv > t}") > ) > and method : _ -> MethodRecPython = > jp false (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun s x -> > let method_args = x.free_vars |> Array.map (fun (L(i,t)) -> > $"v{i} : {tyv t}") |> String.concat ", " > line s $"def method{x.tag}({method_args}) -> {tup_ty x.range}:" > binds_start x.free_vars (indent s) x.body > ) > and closure : _ -> ClosureRecPython = > jp true (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; > free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars > domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun _ -> raise_codegen_error "Non-standard functions are not > supported in the Python backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun s x -> > let env_args = x.free_vars |> Array.map (fun (L(i,t)) -> > $"env_v{i} : {tyv t}") |> String.concat ", " > line s $"def Closure{x.tag}({env_args}):" > let s = indent s > let inner_args = x.domain_args |> Array.map (fun (L(i,t)) -> > $"v{i} : {tyv t}") |> String.concat ", " > line s $"def inner({inner_args}) -> {tup_ty x.range}:" > let _ = > let s = indent s > if x.free_vars.Length > 0 then > let nonlocal_args = x.free_vars |> Array.map (fun > (L(i,t)) -> $"env_v{i}") |> String.concat ", " > line s $"nonlocal {nonlocal_args}" > x.free_vars |> Array.map (fun (L(i,t)) -> $"v{i} = > env_v{i}") |> String.concat "; " |> line s > binds_start x.free_vars s x.body > line s "return inner" > ) > > import "cupy as cp" > import "numpy as np" > from "dataclasses import dataclass" > from "typing import NamedTuple, Union, Callable, Tuple" > env.globals.Add "i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; > u16 = int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = > str" > env.globals.Add "cuda = False" > env.globals.Add "" > > let main = System.Text.StringBuilder() > let s = {text=main; indent=0} > > line s "def main_body():" > binds_start [[||]] (indent s) x > s.text.AppendLine() |> ignore > > line s "def main():" > line (indent s) "r = main_body()" > line (indent s) "if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed." > line (indent s) "return r" > s.text.AppendLine() |> ignore > > line s "if __name__ == '__main__': result = main(); None if result is > None else print(result)" > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > types |> Seq.iter (fun x -> program.Append(x) |> ignore) > functions |> Seq.iter (fun x -> program.Append(x) |> ignore) > program.Append(main).ToString() > > let codegenPython (default_env : DefaultEnv) env x = > let cuda_kernels = System.Text.StringBuilder().AppendLine("kernel = > r\"\"\"") > let g = Dictionary(HashIdentity.Structural) > let globals, fwd_dcls, types, functions, main_defs as ars = > ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray() > > let codegen = CodegenCuda.codegenCuda default_env ars env > let python_code = > codegen' (fun (jp_body,key,r') -> > let backend_name = (fst jp_body).node > match backend_name with > | "Cuda" -> > memoize g (fun (jp_body,key & (C(args,_))) -> > let args = rdata_free_vars args > match (fst env.join_point_method.[[jp_body]]).[[key]] > with > | Some a, Some _, _ -> codegen args a > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > string g.Count > ) (jp_body,key) > | x -> raise_codegen_error_backend r' $"The Python + Cuda > backend does not support the {x} backend." > ) env x > > globals |> Seq.iter (fun x -> cuda_kernels.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > types |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > functions |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > main_defs |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > > cuda_kernels > .AppendLine("\"\"\"") > .AppendLine(System.IO.File.ReadAllText(System.IO.Path.Join( > #if !INTERACTIVE > // AppDomain.CurrentDomain.BaseDirectory, > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > #else > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > #endif > "reference_counting.py" > ))) > .Append(python_code).ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 3.08s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (409,67)-(409,70) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## WDiff > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > // Full name: Microsoft.FSharp.Core.Result<_,_>.Ok > > open FSharp.Core > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_errors > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_errors line (ers : LineTokenErrors list) : RString list = > ers |> List.mapi (fun i l -> > let i = line + i > l |> List.map (fun (r,x) -> x, ({|line=i; character=r.from|}, {|line=i; > character=r.nearTo|})) > ) > |> List.concat > |> List.groupBy snd > |> List.map (fun (k,v) -> k, process_error (List.map fst v)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tokenize_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Replaces the token lines and updates the errors given the edit. > let tokenize_replace (lines : _ FSharpx.Collections.PersistentVector > FSharpx.Collections.PersistentVector, errors : _ list) (edit : SpiEdit) = > let toks, ers = Array.map tokenize edit.lines |> Array.unzip > let lines = replace edit.from edit.nearTo toks lines > let errors = > let adj = edit.lines.Length - (edit.nearTo - edit.from) > errors |> List.choose (fun ((a : VSCPos,b),c as x) -> > if edit.from <= a.line && a.line < edit.nearTo then None > elif edit.nearTo <= a.line && adj <> 0 then Some (add_line_to_range > adj (a,b),c) > else Some x > ) > let errors = List.append errors (process_errors edit.from (Array.toList > ers)) > lines, errors > > type [[<ReferenceEquality>]] TokenizerState = { > lines_text : string FSharpx.Collections.PersistentVector > lines_token : LineTokens > blocks : LineTokens Block list > errors : RString list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_init = { lines_text = > FSharpx.Collections.PersistentVector.empty; lines_token = > FSharpx.Collections.PersistentVector.empty; blocks = [[]]; errors = [[]] } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### replace' > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Immutably updates the state based on the request. Does diffing to make the > operation efficient. > /// It is possible for the server to go out of sync, in which case an error is > returned. > let replace' (state : TokenizerState) (edit : SpiEdit) = > let lines_text = replace edit.from edit.nearTo edit.lines state.lines_text > let lines_token, errors = tokenize_replace (state.lines_token, state.errors) > edit > let blocks = wdiff_block_all state.blocks (lines_token, edit.lines.Length, > edit.from, edit.nearTo) > {lines_text=lines_text; lines_token=lines_token; errors=errors; > blocks=blocks} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_all (state : TokenizerState) text = > let text = lines text > let text' = state.lines_text |> Seq.toArray > let rec loop (index,text : string [[]] as x) i = if i < min text.Length > state.lines_text.Length && index text i = index text' i then loop x (i+1) else i > let from = loop ((fun text i -> text.[[i]]),text) 0 > if from = text.Length then state else > let text = text.[[from..]] > let fromRev = loop ((fun text i -> text.[[text.Length-1-i]]),text) 0 > replace' state {|from=from; nearTo=text'.Length-fromRev; > lines=text.[[..text.Length-1-fromRev]]|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_edit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_edit (state : TokenizerState) (edit : SpiEdit) = > if edit.nearTo <= state.lines_text.Length then Ok (replace' state edit) > else Error "The edit is out of bounds and cannot be applied. The language > server and the editor are out of sync. Try reopening the file being edited." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### semantic_updates_apply > > ── fsharp ────────────────────────────────────────────────────────────────────── > let semantic_updates_apply (block : LineTokens) updates = > Seq.fold (fun block (c : VectorCord, l) -> > let x = > let r, x = FSharpx.Collections.PersistentVector.nthNth c.row c.col > block > let x = > match x with > | TokVar(a,_) -> TokVar(a,l) > | TokSymbol(a,_) -> TokSymbol(a,l) > | TokOperator(a,_) -> TokOperator(a,l) > | TokUnaryOperator(a,_) -> TokUnaryOperator(a,l) > | x -> failwithf "Compiler error: Cannot change the semantic > legend for the %A token." x > r, x > FSharpx.Collections.PersistentVector.updateNth c.row c.col x block > ) block updates > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parse_block > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parse_block default_env is_top_down (block : LineTokens) = > let comments, cords_tokens = > Array.init block.Length (fun line -> > let x = block.[[line]] > let comment, len = match > FSharpx.Collections.PersistentVector.tryLast x with Some (r, TokComment c) -> > Some (r, c), x.Length-1 | _ -> None, x.Length > let tokens = Array.init len (fun i -> > let r, x = x.[[i]] > {|row=line; col=i|}, (({| line=line; character=r.from |}, {| > line=line; character=r.nearTo |}), x) > ) > comment, tokens > ) > |> Array.unzip > let cords, tokens = Array.unzip (Array.concat cords_tokens) > > let semantic_updates = ResizeArray() > let env = { > tokens_cords = cords; semantic_updates = semantic_updates > comments = comments; tokens = tokens; i = ref 0; is_top_down = > is_top_down > default_env = default_env > } > {result=parseBlockParsing env; semantic_tokens=semantic_updates_apply block > semantic_updates} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_parse_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_parse_init is_top_down : ParserState = {is_top_down=is_top_down; > blocks=[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_parse > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_parse default_env (state : ParserState) (unparsed_blocks : LineTokens > Block list) = > let dict = Dictionary(HashIdentity.Reference) > // Offset should be ignored when memoizing the results of parsing. > List.iter (fun (a,b) -> dict.Add(a,b.block)) state.blocks > let blocks = unparsed_blocks |> List.map (fun x -> > x.block, {block=memoize dict (fun a -> Hopac.memo(Job.thunk <| fun () -> > (parse_block default_env state.is_top_down) a)) x.block; offset=x.offset} > ) > {state with blocks = blocks } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleState = { tokenizer : TokenizerState; bundler : BlockBundleState; > parser : ParserState } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_init is_top_down = {tokenizer = wdiff_tokenizer_init; bundler = > wdiff_block_bundle_init; parser = wdiff_parse_init is_top_down} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_body default_env state tokenizer = > if state.tokenizer = tokenizer then state else > let parser = wdiff_parse default_env state.parser tokenizer.blocks > let bundler = wdiff_block_bundle state.bundler parser > {tokenizer=tokenizer; parser=parser; bundler=bundler} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_edit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_edit default_env (state : ModuleState) x = wdiff_tokenizer_edit > state.tokenizer x |> Result.map (wdiff_module_body default_env state) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_all default_env state x = wdiff_tokenizer_all state.tokenizer x > |> wdiff_module_body default_env state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_init_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_init_all default_env is_top_down x = wdiff_module_all > default_env (wdiff_module_init is_top_down) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileState<'input,'result,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] FileState<'input,'result,'state> = { input : > 'input; result : 'result; state : 'state } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileFuns<'a,'b,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FileFuns<'a,'b,'state> = > abstract member eval : 'state * 'a -> 'b > abstract member diff : 'state * 'b * 'a -> 'b > abstract member init : 'a -> FileState<'a,'b,'state> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStateValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStateValue = Bundle option * InferResult * TopEnv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStatePropagated > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStatePropagated = (bool * TopEnv) Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerState = FileState<PackageId * ModuleId * BlockBundleState, > TypecheckerStateValue Stream, TypecheckerStatePropagated> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typecheck > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec typecheck (package_id,module_id,env : TopEnv) x = x >>=* function > | Cons((_,b : BlockBundleValue), ls) -> > match b.bundle with > | Some bundle -> > let x = infer package_id module_id env bundle > let adds = match x.top_env_additions with AOpen x | AInclude x -> x > let env = unionInfer adds env > Job.result (Cons((b.bundle,x,env),typecheck > (package_id,module_id,env) ls)) > | None -> > typecheck (package_id,module_id,env) ls :> _ Job > | Nil -> > Job.result Nil > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### diff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec diff (package_id,module_id,env) (result,input : BlockBundleState) = > let tc () = typecheck (package_id,module_id,env) input > if Promise.Now.isFulfilled result then > input >>** fun input -> > match Promise.Now.get result,input with > | Cons((b',_,env as x),next), Cons((_,b),bs) when b' = b.bundle -> > Promise.Now.withValue (Cons(x,diff (package_id,module_id,env) (next,bs))) > | _ -> tc() > else tc() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_file_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_file_tc = {new FileFuns<PackageId * ModuleId * BlockBundleState, > TypecheckerStateValue Stream, TypecheckerStatePropagated> with > member _.eval(state,(pid,mid,x)) = > state >>=* fun (_,env) -> > typecheck (pid,mid,env) x > member _.diff(state,b,(pid,mid,a)) = > state >>=* fun (_,env) -> diff (pid,mid,env) (b,a) > member _.init x = { > input = x > result = Promise.Now.never() > state = Promise.Now.never() > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file_update_state > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file_update_state (funs : FileFuns<'a,'b,'state>) (state : > FileState<'a,'b,'state>) (x : 'state) = > if state.state = x then state else {state with state=x; > result=funs.eval(x,state.input)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file_update_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file_update_input (funs : FileFuns<'a,'b,'state>) (state : > FileState<'a,'b,'state>) (x : 'a) = > if state.input = x then state else {state with input=x; > result=funs.diff(state.state,state.result,x)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file (funs : FileFuns<'a,'b,'state>) (state : FileState<'a,'b,'state>) > (a,b) = > if state.state = a then wdiff_file_update_input funs state b else {state=a; > input=b; result=funs.eval(a,b)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFilesTree > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFilesTree = > | File of module_id: ModuleId * path: string * name: string option > | Directory of dir_id: DirId * name: string * ProjFilesTree list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFiles > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFiles = { tree : ProjFilesTree list; num_dirs : int; num_files : int } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFileFuns<'a,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFileFuns<'a,'state> = > abstract member file : string option * 'state * 'a -> 'a * 'state > abstract member union : 'state * 'state -> 'state > abstract member in_module : string * 'state -> 'state > abstract member default' : DefaultEnv -> 'state > abstract member empty : 'state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFilesState<'a,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] ProjFilesState<'a,'state> = { > init : 'state > uids_file : ('a * 'state) [[]] > uids_directory : 'state [[]] > files : ProjFiles > result : 'state > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_files_diff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_files_diff (uids_file : ('a * 'b) [[]], uids_directory : 'b [[]], > files) (uids, files') = > let uids_file' = Array.zeroCreate (Array.length uids) > let uids_directory' = Array.zeroCreate files'.num_dirs > // Ref equality is done first for performance. Most of the time the strings > will be the same. > let eq a b = System.Object.ReferenceEquals(a,b) || a = b > let rec loop = function > | File(mid,path,name), File(mid',path',name') when mid = mid' && eq path > path' && eq name name' -> > let x = uids_file.[[mid]] > if uids.[[mid]] = fst x then uids_file'.[[mid]] <- x; true else > false > | Directory(uid,name,l), Directory(uid',name',l') when uid = uid' && eq > name name' && list (l,l') -> > uids_directory'.[[uid]] <- uids_directory.[[uid]]; true > | _ -> false > and list = function > | x :: xs, y :: ys -> loop (x,y) && list (xs,ys) > | _ -> false > if list (files.tree, files'.tree) then None else Some > (uids_file',uids_directory') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_files (funs : ProjFileFuns<'a,'state>) uids_file uids_directory uids s > l = > let inline memo (uids : _ [[]]) uid f = > let x = uids.[[uid]] > if isNull (box x) then let x = f() in uids.[[uid]] <- x; x > else x > let rec loop state = function > | File(mid,_,name) -> memo uids_file mid (fun () -> > funs.file(name,state,Array.get uids mid)) |> snd > | Directory(uid,name,l) -> memo uids_directory uid (fun () -> > funs.in_module(name,list state l)) > and list s l = > List.fold (fun (empty,big) x -> > let small = loop big x > funs.union(small,empty), funs.union(small,big) > ) (funs.empty, s) l |> fst > list s l.tree > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files_update_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files_update_files (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (uids,files : ProjFiles) = > match proj_files_diff (state.uids_file,state.uids_directory,state.files) > (uids,files) with > | Some (uids_file, uids_directory) -> {state with files=files; > uids_file=uids_file; uids_directory=uids_directory; result=proj_files funs > uids_file uids_directory uids state.init files} > | None -> state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files_update_packages (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (init : 'state) = > if state.init = init then state else > let uids_file, uids_directory = Array.zeroCreate state.uids_file.Length, > Array.zeroCreate state.uids_directory.Length > let uids = Array.map fst state.uids_file > {state with init=init; uids_file=uids_file; uids_directory=uids_directory; > result=proj_files funs uids_file uids_directory uids init state.files} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (init,(uids,files)) = > if state.init = init then wdiff_proj_files_update_files funs state > (uids,files) > else > let uids_file, uids_directory = Array.zeroCreate files.num_files, > Array.zeroCreate files.num_dirs > {files=files; init=init; uids_file=uids_file; > uids_directory=uids_directory; result=proj_files funs uids_file uids_directory > uids init files} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typechecker_results_summary > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typechecker_results_summary l = > Stream.foldFun (fun (has_error,big) (_,x : InferResult,_) -> > has_error || List.isEmpty x.errors = false, > match x.top_env_additions with > | AOpen _ -> big > | AInclude small -> unionInfer small big > ) (false,top_env_emptyInfer) l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_file_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_file_tc = {new > ProjFileFuns<TypecheckerState,TypecheckerStatePropagated> with > member _.file(name,state,x) = > let x = wdiff_file_update_state funs_file_tc x state > let env = > typechecker_results_summary x.result >>-* fun (has_error,env) -> > has_error, match name with None -> env | Some name -> in_moduleInfer > name env > x,env > member _.union(small,big) = small >>=* fun small -> big >>- fun big -> fst > small || fst big, unionInfer (snd small) (snd big) > member _.in_module(name,small) = small >>-* fun (has_error,env) -> > has_error, in_moduleInfer name env > member _.default' default_env = Promise.Now.withValue > (false,top_env_defaultInfer default_env) > member _.empty = Promise.Now.withValue (false,top_env_emptyInfer) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PackageEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PackageEnv = { > nominals_aux : Map<PackageId,Map<GlobalId, {|name : string; kind : TT|}>> > nominals : Map<PackageId,Map<GlobalId, {|vars : Var list; body : T|}>> > prototypes_instances : Map<PackageId,Map<GlobalId * GlobalId, Constraint Set > list>> > prototypes : Map<PackageId,Map<GlobalId, {|name : string; signature : T; > kind : TT|}>> > ty : Map<string,T> > term : Map<string,T> > constraints : Map<string,ConstraintOrModule> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let union small big = { > nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux > nominals = Map.foldBack Map.add small.nominals big.nominals > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > prototypes = Map.foldBack Map.add small.prototypes big.prototypes > ty = Map.foldBack Map.add small.ty big.ty > term = Map.foldBack Map.add small.term big.term > constraints = Map.foldBack Map.add small.constraints big.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_moduleWDiff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_moduleWDiff m (a : PackageEnv) = > {a with > ty = Map.add m (TyModule a.ty) Map.empty > term = Map.add m (TyModule a.term) Map.empty > constraints = Map.add m (M a.constraints) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_to_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_to_file (x : PackageEnv) = { > nominals_next_tag = 0 > nominals_aux = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals_aux > Map.empty > nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) > x.prototypes_instances Map.empty > prototypes = Map.foldBack (fun _ -> Map.foldBack Map.add) x.prototypes > Map.empty > ty = x.ty > term = x.term > constraints = x.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_file_to_package > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_file_to_package package_id (small : TopEnv) (big : PackageEnv): > PackageEnv = { > nominals_aux = Map.add package_id small.nominals_aux big.nominals_aux > nominals = Map.add package_id small.nominals big.nominals > prototypes_instances = Map.add package_id small.prototypes_instances > big.prototypes_instances > prototypes = Map.add package_id small.prototypes big.prototypes > ty = small.ty > term = small.term > constraints = small.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_empty = { > nominals_aux = Map.empty > nominals = Map.empty > prototypes_instances = Map.empty > prototypes = Map.empty > ty = Map.empty > term = Map.empty > constraints = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_default > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_default default_env = > let x = top_env_defaultInfer default_env > {package_env_empty with ty = x.ty; term = x.term; constraints = > x.constraints} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjPackagesState<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjPackagesState<'a> = { > packages : (string option * 'a) list > result : 'a > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjState<'file_inputs,'files,'packages> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjState<'file_inputs,'files,'packages> = { > package_id : PackageId > packages : 'packages ProjPackagesState > files : ProjFilesState<'file_inputs,'files> > result : 'packages > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStateTop > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStateTop = (bool * PackageEnv) Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjStateTC > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjStateTC = > ProjState<TypecheckerState,TypecheckerStatePropagated,TypecheckerStateTop> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvTC > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvTC = Map<PackageId,ProjStateTC> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjPackageFuns<'file,'package> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjPackageFuns<'file,'package> = > abstract member unions : DefaultEnv -> (string option * 'package) list -> > 'package > abstract member union : 'package * 'package -> 'package > abstract member in_module : string * 'package -> 'package > abstract member package_to_file : 'package -> 'file > abstract member add_file_to_package : PackageId * 'file * 'package -> > 'package > abstract member default' : DefaultEnv -> 'package > abstract member empty : 'package > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_package_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_package_tc = {new > ProjPackageFuns<TypecheckerStatePropagated,TypecheckerStateTop> with > member funs.unions default_env l = > let f = function Some name, small -> funs.in_module(name,small) | None, > small -> small > List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env) > l > member _.union(small,big) = > Job.delay <| fun () -> > Hopac.queueIgnore big > small >>= fun a -> > big >>- fun b -> > fst a || fst b, union (snd a) (snd b) > |> Hopac.memo > member _.in_module(name,x) = x >>-* fun (has_error,env) -> has_error, > in_moduleWDiff name env > member _.package_to_file(x) = x >>-* fun (has_error,env) -> has_error, > package_to_file env > member _.add_file_to_package(pid,a,b) = > a >>=* fun (has_error,env) -> > b >>-* fun (has_error',env') -> > has_error || has_error', add_file_to_package pid env env' > member _.default' default_env = Promise.Now.withValue (false, > package_env_default default_env) > member _.empty = Promise.Now.withValue (false, package_env_empty) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_init default_env (funs_packages : > ProjPackageFuns<'file,'package>) (funs_files : ProjFileFuns<'file_input,'file>) > package_id : ProjState<'file_input,'file,'package> = > let packages = { packages = [[]]; result = funs_packages.default' > default_env} > let files = { > files={tree=[[]]; num_dirs=0; num_files=0} > uids_file=[[||]]; uids_directory=[[||]] > init=funs_files.default' default_env; result=funs_files.empty > } > let result = funs_packages.empty > { package_id = package_id; packages = packages; files = files; result = > result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_packages default_env (funs : ProjPackageFuns<_,'a>) (state : 'a > ProjPackagesState) x = > if state.packages = x then state else {packages = x; result = funs.unions > default_env x } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_update_packages default_env funs_packages funs_files (state : > ProjState<'a,'b,'state>) x = > let packages = wdiff_proj_packages default_env funs_packages state.packages > x > if state.packages = packages then state else > let files = wdiff_proj_files_update_packages funs_files state.files > (funs_packages.package_to_file(packages.result)) > let result = > funs_packages.add_file_to_package(state.package_id,files.result,packages.result) > {state with packages=packages; files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_update_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_update_files (funs_packages : ProjPackageFuns<_,_>) funs_files > (state : ProjState<'a,'b,'state>) x = > let files = wdiff_proj_files_update_files funs_files state.files x > if state.files = files then state else > let result = > funs_packages.add_file_to_package(state.package_id,files.result,state.packages.r > esult) > {state with files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj default_env (funs_packages : ProjPackageFuns<_,_>) funs_files > (state : ProjState<'file_input,'file,'state>) (packages,files) = > let packages = wdiff_proj_packages default_env funs_packages state.packages > packages > if state.packages = packages then wdiff_proj_update_files funs_packages > funs_files state files > else > let files = wdiff_proj_files funs_files state.files > (funs_packages.package_to_file(packages.result),files) > let result = > funs_packages.add_file_to_package(state.package_id,files.result,packages.result) > {state with packages=packages; files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvUpdate<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvUpdate<'a> = > | UpdatePackageModule of PackageId * (string option * PackageId) list * ('a > [[]] * ProjFiles) > | UpdatePackage of PackageId * (string option * PackageId) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### map_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let map_packages s packages = packages |> List.map (fun (a,b) -> a, (Map.find b > s).result) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenv > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenv default_env funs_packages funs_files (s : > Map<PackageId,ProjState<'a,'b,'state>>) l = > List.fold (fun s -> function > | UpdatePackageModule(uid,packages,files) -> Map.add uid (wdiff_proj > default_env funs_packages funs_files s.[[uid]] (map_packages s packages,files)) > s > | UpdatePackage(uid,packages) -> Map.add uid (wdiff_proj_update_packages > default_env funs_packages funs_files s.[[uid]] (map_packages s packages)) s > ) s l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## WDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassStateValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassStateValue = InferResult * PrepassTopEnv AdditionType * > PrepassTopEnv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassStatePropagated > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassStatePropagated = PrepassTopEnv Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassState = FileState<PackageId * ModuleId * string * > TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec prepass (package_id,module_id,path,env) = function > | Cons((_,r,_) : TypecheckerStateValue, ls) -> > r.filled_top >>- fun filled_top -> > let x = (prepassPrepass package_id module_id path env).filled_top > filled_top > let adds = match x with AOpen x | AInclude x -> x > let env = unionPrepass adds env > Cons((r,x,env),ls >>=* prepass (package_id,module_id,path,env)) > | Nil -> > Job.result Nil > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### diffWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec diffWDiffPrepass (package_id,module_id,path,env) (result,input : > TypecheckerStateValue Stream) = > input >>** fun input -> > let tc () = prepass (package_id,module_id,path,env) input |> Hopac.memo > if Promise.Now.isFulfilled result then > match Promise.Now.get result,input with > | Cons((b',_,env as x),next), Cons((_,b,_),bs) when b' = b -> > Cons(x,diffWDiffPrepass (package_id,module_id,path,env) (next,bs)) |> > Promise.Now.withValue > | _ -> tc() > else tc() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_file_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_file_prepass = {new FileFuns<PackageId * ModuleId * string * > TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated> > with > member _.eval(state,(pid,mid,path,x)) = > state >>=* fun env -> > x >>= prepass (pid,mid,path,env) > member _.diff(state,b,(pid,mid,path,a)) = > state >>=* fun env -> diffWDiffPrepass (pid,mid,path,env) (b,a) > member _.init x = { > input = x > result = Promise.Now.never() > state = Promise.Now.never() > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepass_results_summary > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepass_results_summary l = > Stream.foldFun (fun big (_,x,_) -> > match x with > | AOpen _ -> big > | AInclude small -> unionPrepass small big > ) (top_env_emptyPrepass) l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_file_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_file_prepass = {new > ProjFileFuns<PrepassState,PrepassStatePropagated> with > member _.file(name,state,x) = > let x = wdiff_file_update_state funs_file_prepass x state > let env = > prepass_results_summary x.result >>-* fun env -> > match name with None -> env | Some name -> in_modulePrepass name env > x,env > member _.union(small,big) = small >>=* fun small -> big >>- fun big -> > unionPrepass small big > member _.in_module(name,small) = small >>-* in_modulePrepass name > member _.default' default_env = Promise.Now.withValue > (top_env_defaultPrepass default_env) > member _.empty = Promise.Now.withValue top_env_emptyPrepass > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassPackageEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassPackageEnv = { > prototypes_instances : Map<int, Map<GlobalId * GlobalId,E>> > nominals : Map<int, Map<GlobalId,{|body : TPrepass; name : string|}>> > term : Map<string,E> > ty : Map<string,TPrepass> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionWDiffPrepass small big = { > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > nominals = Map.foldBack Map.add small.nominals big.nominals > term = Map.foldBack Map.add small.term big.term > ty = Map.foldBack Map.add small.ty big.ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_module > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_module m (a : PrepassPackageEnv) = > {a with > ty = Map.add m (TModule a.ty) Map.empty > term = Map.add m (EModule a.term) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_emptyWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_emptyWDiffPrepass = { > prototypes_instances = Map.empty > nominals = Map.empty > term = Map.empty > ty = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_to_fileWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_to_fileWDiffPrepass (x : PrepassPackageEnv) = { > nominals_next_tag = 0 > nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) > x.prototypes_instances Map.empty > ty = x.ty > term = x.term > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_file_to_packageWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_file_to_packageWDiffPrepass package_id (small : PrepassTopEnv) (big : > PrepassPackageEnv): PrepassPackageEnv = { > nominals = Map.add package_id small.nominals big.nominals > prototypes_instances = Map.add package_id small.prototypes_instances > big.prototypes_instances > ty = small.ty > term = small.term > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_defaultWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_defaultWDiffPrepass default_env = { > package_env_emptyWDiffPrepass with ty = (top_env_defaultPrepass default_env).ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjStatePrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjStatePrepass = > ProjState<PrepassState,PrepassStatePropagated,PrepassPackageEnv Promise> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_package_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_package_prepass = {new > ProjPackageFuns<PrepassStatePropagated,PrepassPackageEnv Promise> with > member funs.unions default_env l = > let f = function Some name, small -> funs.in_module(name,small) | None, > small -> small > List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env) > l > member _.union(small,big) = > Job.delay <| fun () -> > Hopac.queueIgnore big > small >>= fun a -> big >>- unionWDiffPrepass a > |> Hopac.memo > member _.in_module(name,x) = x >>-* fun env -> in_module name env > member _.package_to_file(x) = x >>-* package_to_fileWDiffPrepass > member _.add_file_to_package(pid,a,b) = > a >>=* fun env -> > b >>-* add_file_to_packageWDiffPrepass pid env > member _.default' default_env = Promise.Now.withValue > (package_env_defaultWDiffPrepass default_env) > member _.empty = Promise.Now.withValue package_env_emptyWDiffPrepass > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Everything that deals with Spiral project files themselves goes here > open FParsec > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawFileHierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawFileHierarchy = > | Directory of VSCRange * RString * RawFileHierarchy list > | File of VSCRange * RString * is_top_down : bool * is_include : bool > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigResumableError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigResumableError = > | DuplicateFiles of VSCRange [[]] [[]] > | DuplicateRecordFields of VSCRange [[]] [[]] > | MissingNecessaryRecordFields of string [[]] * VSCRange > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigFatalError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigFatalError = > | Tabs of VSCRange [[]] > | ParserError of string * VSCRange > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception ConfigException of ConfigFatalError > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec spaces_template s = (spaces >>. optional (followedByString "//" >>. > skipRestOfLine true >>. spaces_template)) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spacesSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spacesSpiProj s = spaces_template s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise' x = raise (ConfigException x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_if_not_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_if_not_empty exn l = if Array.isEmpty l = false then raise' (exn l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_to_exception_list' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_to_exception_list' (p: CharStream<ResizeArray<ConfigResumableError>>) = > p.State.UserState.Add > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_to_exception_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_to_exception_list (p: CharStream<ResizeArray<ConfigResumableError>>) exn > l = if Array.isEmpty l = false then p.State.UserState.Add (exn l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### column > > ── fsharp ────────────────────────────────────────────────────────────────────── > let column (p : CharStream<_>) = p.Column > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pos > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pos (p : CharStream<_>) : VSCPos = {|line=int p.Line - 1; character=int > p.Column - 1|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pos' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pos' p = Reply(pos p) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangeSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rangeSpiProj f p = pipe3 pos' f pos' (fun a b c -> ((a, c) : VSCRange), b) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_small_var_char_startingSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_small_var_char_startingSpiProj c = isAsciiLower c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_var_charSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_charSpiProj c = isAsciiLetter c || c = '_' || c = ''' || isDigit c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file' p = many1Satisfy2L is_small_var_char_startingSpiProj > is_var_charSpiProj "lowercase variable name" p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fileSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fileSpiProj p = (rangeSpiProj file' .>> spacesSpiProj) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_verify > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_verify p = (skipMany1Satisfy2L is_small_var_char_startingSpiProj > is_var_charSpiProj "lowercase variable name" .>> spacesSpiProj .>> eof) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_hierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec file_hierarchy p = > let i = column p > let expr p = if i = column p then file_or_directory p else > Reply(ReplyStatus.Error,expected "file or directory on the same or greater > indentation as the first one") > (many expr |>> fun l -> > let _ = > l |> List.toArray > |> Array.choose (function | File(_,(a,b),_,_) -> Some (b,a) | _ -> > None) > |> Array.groupBy fst > |> Array.choose (fun (a,b) -> if b.Length > 1 then Some (Array.map > snd b) else None) > |> add_to_exception_list p DuplicateFiles > l > ) p > > and file_or_directory p = > let i = column p > let file_hierarchy p = if i < column p then file_hierarchy p else > Reply([[]]) > (rangeSpiProj (rangeSpiProj file' >>= fun (r,name) p -> > let adjust_range ((a,b) : VSCRange) : VSCRange = if b.character < > a.character then a,{|line=b.line-1; character=System.Int32.MaxValue|} else a,b > let x = p.Peek2() > match x.Char0, x.Char1 with > | '/',_ -> p.Skip(); (spacesSpiProj >>. file_hierarchy |>> fun files r' > -> Directory(adjust_range r',(r,name),files)) p > | '-',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),true,true)) p > | '*','-' -> p.Skip(2); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),false,true)) p > | '*',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),false,false)) p > | _ -> (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),true,false)) p > ) > |>> fun (r',f) -> f r') p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawSchemaPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawSchemaPackages = {range : VSCRange; name : string; is_in_compiler_dir : > bool; is_include : bool} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let packages p = > let i = column p > let file = rangeSpiProj (((skipChar '|' >>% true) <|>% false) .>>. file') > >>= fun (r,(is_in_compiler_dir,name)) p -> > match p.Peek() with > | '-' -> p.Skip(); (spacesSpiProj >>% {range=r; name=name; > is_in_compiler_dir=is_in_compiler_dir; is_include=true}) p > | _ -> (spacesSpiProj >>% {range=r; name=name; > is_in_compiler_dir=is_in_compiler_dir; is_include=false}) p > let file p = if i <= column p then file p else > Reply(ReplyStatus.Error,expected "directory on the same or greater indentation > as the first one") > many file p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tab_positions > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tab_positions (str : string): VSCRange [[]] = > let mutable line = -1 > lines str |> Array.choose (fun x -> > line <- line + 1 > let x = {|line=line; character=x.IndexOf("\t")|} > if x.character <> -1 then Some(x,{|x with character=x.character+1|}) > else None > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_reduce > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_reduce (field: Parser<'schema -> 'schema, _>) s p = > let record_body p = > let i = column p > let indent expr p = if i = column p then expr p else > Reply(ReplyStatus.Error,expected "record field on the same indentation as the > first one") > many (indent field) p > (rangeSpiProj record_body |>> fun (r,l) -> r, List.fold (|>) s l) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_field > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_field (name, p) = > (skipString name >>. skipChar ':' >>. spacesSpiProj >>. rangeSpiProj p) > |>> (fun (r,f) (s,l) -> f s, (r, name) :: l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record fields fields_necessary schema = > let fields = choice (List.map record_field fields) > record_reduce fields (schema, [[]]) >>= fun (range,(schema,l)) p -> > let l = List.toArray l > let _ = > let names = Array.map snd l > Set fields_necessary - Set names > |> Set.toArray > |> add_to_exception_list p (fun fields -> > MissingNecessaryRecordFields(fields,range)) > let _ = > Array.groupBy snd l > |> Array.choose (fun (k, v) -> if v.Length > 1 then Some (Array.map > fst v) else None) > |> add_to_exception_list p DuplicateRecordFields > > Reply(schema) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawSchema > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawSchema = { > name : RString option > version : RString option > moduleDir : RString option > modules : RawFileHierarchy list > packageDir : RString option > packages : RawSchemaPackages list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### schema_def > > ── fsharp ────────────────────────────────────────────────────────────────────── > let schema_def: RawSchema = { > name=None > version=None > moduleDir=None > modules=[[]] > packageDir=None > packages=[[]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigError = ResumableError of ConfigResumableError [[]] | FatalError of > ConfigFatalError > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### config > > ── fsharp ────────────────────────────────────────────────────────────────────── > let config text = > try > let _ = tab_positions text |> raise_if_not_empty Tabs > > let directory p = (rangeSpiProj (restOfLine false) .>> spacesSpiProj |>> > fun (r,x) -> Some(r,x.Trim())) p > > let fields = [[ > "version", rangeSpiProj (restOfLine true .>> spacesSpiProj) |>> fun > (r,x) s -> {s with version=Some (r,x.TrimEnd())} > "name", fileSpiProj |>> fun x s -> {s with name=Some x} > "moduleDir", directory |>> fun x s -> {s with moduleDir=x} > "modules", file_hierarchy |>> fun x s -> {s with modules=x} > "packageDir", directory |>> fun x s -> {s with packageDir=x} > "packages", packages |>> fun x s -> {s with packages=x} > ]] > let necessary = [[]] > > match runParserOnString (spacesSpiProj >>. record fields necessary > schema_def .>> eof) (ResizeArray()) "spiral.config" text with > | Success(a,userstate,_) -> > if userstate.Count > 0 then userstate.ToArray() |> ResumableError |> > Result.Error else Result.Ok a > | Failure(messages,error,_) -> > let x = {|line=int error.Position.Line - 1; character=int > error.Position.Column - 1|} > ParserError(messages, (x,{|x with character=x.character+1|})) |> > FatalError |> Result.Error > with > | :? ConfigException as e -> e.Data0 |> FatalError |> Result.Error > > |> Result.mapError (fun x -> > let fatal_error = function > | Tabs l -> l |> Array.map (fun r -> r, "Tab not allowed.") > | ParserError(x,r) -> [[|r, (lines x).[[3..]] |> String.concat > "\n"|]] > let inline duplicate er = Array.collect (fun l -> let er = er > (Array.length l) in Array.map (fun r -> r, er) l) > let resumable_error = function > | DuplicateFiles l -> duplicate (sprintf "Duplicate name. Count: > %i") l > | DuplicateRecordFields l -> duplicate (sprintf "Duplicate record > field. Count: %i") l > | MissingNecessaryRecordFields (l,r) -> [[|r, sprintf "Record is > missing the fields: %s" (String.concat ", " l)|]] > match x with > | ResumableError x -> Array.collect resumable_error x > | FatalError x -> fatal_error x > |> Array.toList > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileHierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FileHierarchy = > | Directory of VSCRange * path: RString * name : string * FileHierarchy list > | File of VSCRange * path: RString * string option > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaPackages = {dir : RString; name : string option} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Schema = { > moduleDir : VSCRange option * string > modules : FileHierarchy list > packageDir : VSCRange option * string > packages : SchemaPackages list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception SchemaException of RString > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaResult = Result<Schema,RString list> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let schema (pdir,text) : SchemaResult = config text |> Result.bind (fun x -> > try > let combine a (r,b) = > try > Path.Combine(a,b) > |> Path.GetFullPath > |> fun result -> > let result' = result |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"""SpiProj.schema.combine / a: > {a} / b: {b} / result: {result |> SpiralSm.replace "\\" "|"} / result': > {result'}""") _locals > result' > with e -> > raise (SchemaException(r,e.Message)) > let module_dir = > match x.moduleDir with > | Some(r,_ as x) -> Some r, combine pdir x > | None -> None, pdir > let package_dir = > match x.packageDir with > | Some(r,_ as x) -> Some r, combine pdir x > | None -> None, Path.Combine(pdir,"..") |> Path.GetFullPath > // trace Verbose (fun () -> $"""SpiProj.schema / pdir: {pdir} / > module_dir: {module_dir |> snd} / package_dir: {package_dir |> snd |> > SpiralSm.replace "\\" "|"}""") _locals > let modules = > let rec loop prefix = function > | RawFileHierarchy.Directory(r,(r',a),l) -> > let prefix = Path.Combine(prefix,a) > let prefix' = prefix |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"SpiProj.schema.modules.loop | > RawFileHierarchy.Directory(r,(r',a),l) / prefix: {prefix} / prefix': {prefix'}") > _locals > let prefix = prefix' > Directory(r,(r',prefix),a,List.map (loop prefix) l) > | RawFileHierarchy.File(r,(r',a),is_top_down,is_include) -> > let path = Path.Combine(prefix,a + if is_top_down then > ".spi" else ".spir") > let path' = path |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"SpiProj.schema.modules.loop | > RawFileHierarchy.File(r,(r',a),is_top_down,is_include) / path: {path} / path': > {path'}") _locals > let path = path' > File(r,(r',path),if is_include then None else Some a) > List.map (loop (snd module_dir)) x.modules > let packages = > let cdir = > #if !INTERACTIVE > // > Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"..") > Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/VS Code Plugin") > #else > Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/VS Code Plugin") > #endif > |> Path.GetFullPath > x.packages |> List.map (fun x -> > let name = if x.is_include then None else Some x.name > let dir = Path.Combine((if x.is_in_compiler_dir then cdir else > snd package_dir),x.name) > let dir' = dir |> SpiralFileSystem.standardize_path > let dir'' = dir' |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"""SpiProj.schema.packages / dir: {dir > |> SpiralSm.replace "\\" "|"} / dir': {dir'} / dir'': {dir''}""") _locals > let dir = dir'' > {name = name; dir = x.range, dir} > ) > Result.Ok {moduleDir = module_dir; modules = modules; packageDir = > package_dir; packages = packages} > with :? SchemaException as e -> Result.Error [[e.Data0]] > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Graph > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Collections.Generic > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Graph > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Graph = Map<string,string Set> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MirroredGraph > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MirroredGraph = Graph * Graph > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### mirrored_graph_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mirrored_graph_empty : MirroredGraph = Map.empty, Map.empty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_add' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_add' (abs : Graph) a b: Graph = > match Map.tryFind a abs with > | Some bs -> Map.add a (Set.add b bs) abs > | None -> Map.add a (Set.singleton b) abs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_add (s : MirroredGraph) a b: MirroredGraph = link_add' (fst s) a b, > link_add' (snd s) b a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_remove' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_remove' (abs : Graph) a b = > match Map.tryFind a abs with > | Some bs -> > let bs = Set.remove b bs > if Set.isEmpty bs then Map.remove a abs else Map.add a bs abs > | None -> abs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_remove (s : MirroredGraph) a b: MirroredGraph = link_remove' (fst s) a > b, link_remove' (snd s) b a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_remove ((abs,bas as s) : MirroredGraph) a: MirroredGraph = > match Map.tryFind a abs with > | Some bs -> Map.remove a abs, Set.fold (fun bas b -> link_remove' bas b a) > bas bs > | None -> s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_add s a bs = List.fold (fun s b -> link_add s a b) s bs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_replace (s : MirroredGraph) a bs = links_add (links_remove s a) a bs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_get (abs : Graph) a = Map.tryFind a abs |> Option.defaultValue > Set.empty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_exists > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_exists ((abs,bas) : MirroredGraph) x = Map.containsKey x abs || > Map.containsKey x bas > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline topological_sort_template add bas dirty_nodes = > let sort_visited = HashSet() > let rec dfs_rev a = if sort_visited.Add(a) then Seq.iter dfs_rev (links_get > bas a); add a > Seq.iter dfs_rev dirty_nodes > sort_visited > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort' > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Returns the order end -> mid -> start. > let topological_sort' bas start_nodes = let sort_order = Queue() in sort_order, > topological_sort_template sort_order.Enqueue bas start_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Returns the order start -> mid -> end. > let topological_sort bas start_nodes = let sort_order = Stack() in sort_order, > topological_sort_template sort_order.Push bas start_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### circular_nodes > > ── fsharp ────────────────────────────────────────────────────────────────────── > let circular_nodes ((abs,bas) : MirroredGraph) dirty_nodes = > let sort_order, sort_visited = topological_sort bas dirty_nodes > let order = sort_order.ToArray() > let visited = HashSet() > let circular_nodes = Dictionary() > Array.fold (fun i a -> > let sc = ResizeArray() // This array stores the strongly connected > components. > let rec dfs a = if sort_visited.Contains(a) && visited.Add(a) then > Seq.iter dfs (links_get abs a); sc.Add a > dfs a > if 1 < sc.Count then > sc |> Seq.iter (fun x -> circular_nodes.Add(x,i) |> ignore) > i+1 > else > i > ) 0 order |> ignore > order, circular_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## ServerUtils > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjectCodeAction > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjectCodeAction = > | CreateFile of {|filePath : string|} > | DeleteFile of {|range: VSCRange; filePath : string|} // The range here > includes the postfix operators. > | RenameFile of {|filePath : string; target : string|} > | CreateDirectory of {|dirPath : string|} > | DeleteDirectory of {|range: VSCRange; dirPath : string|} // The range here > is for the whole tree, not just the code action activation. > | RenameDirectory of {|dirPath : string; target : string; validate_as_file : > bool|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### code_action_execute > > ── fsharp ────────────────────────────────────────────────────────────────────── > let code_action_execute a = > try match a with > | CreateDirectory a -> Directory.CreateDirectory(a.dirPath) |> ignore; > Result.Ok null > | DeleteDirectory a -> Directory.Delete(a.dirPath,true); Result.Ok > a.dirPath > | RenameDirectory a -> > if a.validate_as_file then > match FParsec.CharParsers.run file_verify a.target with > | FParsec.CharParsers.ParserResult.Success _ -> > Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target)); Result.Ok > a.dirPath > | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> > Result.Error er > else > Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target)); > Result.Ok a.dirPath > | CreateFile a -> > if File.Exists(a.filePath) then Result.Error "File already exists." > else > Directory.GetParent(a.filePath).Create() > File.Create(a.filePath).Dispose() > Result.Ok null > | DeleteFile a -> File.Delete(a.filePath); Result.Ok a.filePath > | RenameFile a -> > match FParsec.CharParsers.run file_verify a.target with > | FParsec.CharParsers.ParserResult.Success _ -> > File.Move(a.filePath,Path.Combine(a.filePath,"..",a.target+Path.GetExtension(a.f > ilePath)),false); Result.Ok a.filePath > | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> Result.Error > er > with e -> Result.Error e.Message > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RAction > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RAction = VSCRange * ProjectCodeAction > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaState = { schema : Schema; errors_parse : RString list; > errors_modules : RString list; errors_packages : RString list} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaEnv = Map<string,SchemaState> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleEnv = Map<string,ModuleState> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_empty = { > schema = {moduleDir = None, null; modules = [[]]; packageDir = None, null; > packages = [[]]} > errors_parse = [[]]; errors_modules = [[]]; errors_packages = [[]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_from_result > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_from_result = function > | Result.Ok schema -> {ss_empty with schema = schema} > | Result.Error ers -> {ss_empty with errors_parse = ers} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_module > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_module (packages : SchemaEnv) (modules : ModuleEnv) (x : > SchemaState) = > let errors = ResizeArray() > let rec loop = function > | FileHierarchy.Directory(_,(r,path),_,l) -> > trace Verbose (fun () -> $"ss_validate_module / dir path: {path}") > _locals > if Map.containsKey path packages then errors.Add(r,"Module directory > has a package file in it.") > list l > | FileHierarchy.File(_,(r,path),_) -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ss_validate_module / file / path: {path} > / path': {path'}") _locals > if Map.containsKey path' modules = false then errors.Add(r,"Module > not loaded.") > and list l = List.iter loop l > list x.schema.modules > Seq.toList errors > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_modules > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_modules (packages : SchemaEnv) modules order = > Array.fold (fun s x -> > match Map.tryFind x s with > | Some v -> Map.add x {v with errors_modules = ss_validate_module > packages modules v} s > | None -> s > ) packages order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_has_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_has_error x = > (List.isEmpty x.errors_parse && List.isEmpty x.errors_modules && > List.isEmpty x.errors_packages) = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_packages (packages : SchemaEnv) (order : string [[]], socs : > Dictionary<string,int>) : SchemaEnv = > Array.fold (fun s path -> > match Map.tryFind path s with > | Some (x : SchemaState) -> > let c p = match socs.TryGetValue(p) with true,b -> b | false,_ -> -1 > let is_circular x = x <> -1 > let are_in_same_strong_component a b = is_circular a && is_circular > b && a = b > let ers = > let cpath = c path > (x.schema.packages, [[]]) ||> List.foldBack (fun {dir=r,p} ers > -> > let cp = c p > if are_in_same_strong_component cpath cp then (r,"Package is > circular and loops through the current one.") :: ers > elif path = p then (r,"Self referential links are not > allowed.") :: ers > else > match Map.tryFind p s with > | Some s' when ss_has_error s' -> (r,"Package has an > error.") :: ers > | Some _ -> ers > | None -> (r,"Package not loaded.") :: ers > ) > Map.add path {x with errors_packages=ers} s > | _ -> s > ) packages order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate packages modules (order,socs) = > let packages = ss_validate_modules packages modules order > ss_validate_packages packages (order,socs) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResultMap<'a,'b> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResultMap<'a,'b> when 'a : comparison = {ok : Map<'a,'b>; error: > Map<'a,'b>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvTCResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvTCResult = ResultMap<PackageId,ProjStateTC> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_sync_schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_sync_schema default_env funs_packages funs_files (ids : > Map<string, PackageId>) (packages : SchemaEnv) > (state : ResultMap<PackageId,ProjState<'file_input,'file,'package>>) > order = > Array.fold (fun (s : ResultMap<_,_>) x -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.wdiff_projenvr_sync_schema / x: > {x} / x': {x'}") _locals > match Map.tryFind x' ids with > | Some pid -> > match Map.tryFind x' packages with > | Some schema -> > match Map.tryFind pid s.ok, Map.tryFind pid s.error, > ss_has_error schema with > | Some _, Some _,_ -> failwith "Compiler error: The ok and error > maps should be disjoint." > | Some x, None, true -> {ok=Map.remove pid s.ok; error=Map.add > pid x s.error} > | None, Some x, false -> {ok=Map.add pid x s.ok; > error=Map.remove pid s.error} > | None, None, c -> > let x = wdiff_proj_init default_env funs_packages funs_files > pid > if c then {s with error=Map.add pid x s.error} else {s with > ok=Map.add pid x s.ok} > | _ -> s > | None -> {ok=Map.remove pid s.ok; error=Map.remove pid s.error} > | None -> s > ) state order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### projenv_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let projenv_update_packages default_env funs_packages funs_files (ids : > Map<string, PackageId>) (packages : SchemaEnv) > (state : Map<PackageId,ProjState<'a,'b,'state>>) (dirty_packages : > Dictionary<_,_>, order : string [[]]) = > Array.foldBack (fun x l -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.projenv_update_packages / x: {x} > / x': {x'}") _locals > match Map.tryFind x' packages with > | None -> l > | Some schema when ss_has_error schema -> l > | Some schema -> > let pid = ids.[[x']] > let packages = schema.schema.packages |> List.map (fun x -> x.name, > ids.[[snd x.dir]]) > match dirty_packages.TryGetValue(x') with > | true, x -> UpdatePackageModule(pid,packages,x) :: l > | false, _ -> UpdatePackage(pid,packages) :: l > ) order [[]] > |> wdiff_projenv default_env funs_packages funs_files state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_iter_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline proj_file_iter_file f (files : ProjFiles) = > let rec loop = function > | ProjFilesTree.File(module_id,path,_) -> f module_id path > | ProjFilesTree.Directory(_,_,l) -> list l > and list l = List.iter loop l > list files.tree > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_get_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_file_get_input uids_file (x : ProjFiles) = > let d = Dictionary(Array.length uids_file) > proj_file_iter_file (fun mid path -> d.Add(path, Array.get uids_file mid |> > fst)) x > d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_from_schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_file_from_schema (x : Schema) : ProjFiles = > let mutable num_files = 0 > let mutable num_dirs = 0 > let rec loop = function > | FileHierarchy.File(_,(_,path),name) -> > let uid = num_files > num_files <- num_files + 1 > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.proj_file_from_schema / path: > {path} / path': {path'}") _locals > ProjFilesTree.File(uid,path',name) > | FileHierarchy.Directory(_,_,name,l) -> > let uid = num_dirs > num_dirs <- num_dirs + 1 > ProjFilesTree.Directory(uid,name,list l) > and list l = List.map loop l > let tree = list x.modules > { tree = tree; num_files = num_files; num_dirs = num_dirs } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_make_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline proj_file_make_input f (files : ProjFiles) = > let ar = Array.zeroCreate files.num_files > proj_file_iter_file (fun mid path -> ar.[[mid]] <- f mid path) files > ar > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline dirty_nodes_template funs (ids : Map<string, PackageId>) (packages : > SchemaEnv) modules > (state : Map<PackageId,_>) (dirty_packages : string HashSet) = > let d = Dictionary<string,_ [[]] * ProjFiles>() > dirty_packages |> Seq.iter (fun path -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.dirty_nodes_template / path: > {path} / path': {path'}") _locals > match Map.tryFind path' ids with > | Some pid -> > match Map.tryFind pid state with > | Some x -> > let modules = modules pid > let files = proj_file_from_schema packages.[[path']].schema > let state = > let state = proj_file_get_input x.files.uids_file > x.files.files > proj_file_make_input (fun mid path -> > trace Verbose (fun () -> > $"ServerUtils.dirty_nodes_template / proj_file_make_input / path: {path} / > path': {path'}") _locals > match state.TryGetValue(path) with > | true, x -> wdiff_file_update_input funs x (modules mid > path) > | false, _ -> funs.init (modules mid path) > ) files > d.Add(path',(state,files)) > | None -> () > | None -> () > ) > d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dirty_nodes_tc (ids : Map<string, PackageId>) (packages : SchemaEnv) > (modules : ModuleEnv) > (state : Map<PackageId,ProjStateTC>) (dirty_packages : string HashSet) = > dirty_nodes_template funs_file_tc ids packages (fun pid mid path -> pid, > mid, modules.[[path]].bundler) state dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dirty_nodes_prepass (ids : Map<string, PackageId>) (packages : SchemaEnv) > (modules : Map<PackageId,ProjStateTC>) > (state : Map<PackageId,ProjStatePrepass>) (dirty_packages : string > HashSet) = > let modules pid = > let x = modules.[[pid]] > let state = proj_file_get_input x.files.uids_file x.files.files > fun (mid : ModuleId) path -> pid, mid, path, state.[[path]].result > dirty_nodes_template funs_file_prepass ids packages modules state > dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr default_env dirty_nodes funs_proj_package funs_proj_file > ids packages modules (state : ResultMap<PackageId,_>) (dirty_packages, > order) = > let state = wdiff_projenvr_sync_schema default_env funs_proj_package > funs_proj_file ids packages state order > let dirty_packages = dirty_nodes ids packages modules state.ok > dirty_packages > {state with ok=projenv_update_packages default_env funs_proj_package > funs_proj_file ids packages state.ok (dirty_packages, order)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_tc default_env ids packages modules state (dirty_packages, > order) = > wdiff_projenvr default_env dirty_nodes_tc funs_proj_package_tc > funs_proj_file_tc > ids packages modules state (dirty_packages, order) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_prepass default_env ids packages modules state > (dirty_packages, order) = > wdiff_projenvr default_env dirty_nodes_prepass funs_proj_package_prepass > funs_proj_file_prepass > ids packages modules state (dirty_packages, order) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LoadResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LoadResult = > | LoadModule of path: string * ModuleState option > | LoadPackage of package_dir: string * SchemaState option > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_top_down > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Threading.Tasks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_top_down (x : string) = Path.GetExtension x = ".spi" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spiproj_suffix > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spiproj_suffix x = Path.Combine(x,"package.spiproj") > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### loader_package > > ── fsharp ────────────────────────────────────────────────────────────────────── > let loader_package default_env (packages : SchemaEnv) (modules : ModuleEnv) > (pdir, text) = > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: {pdir} / > pdir': {pdir'}") _locals > let pdir = pdir' > let queue = Queue() > let load_module modules path = > match Map.tryFind path modules with > | Some _ -> () > | None -> > task { > if File.Exists path then > try let! x = File.ReadAllTextAsync(path) > return LoadModule(path,wdiff_module_init_all default_env > (is_top_down path) x |> Some) > with _ -> return LoadModule(path,None) > else return LoadModule(path,None) // Note: We need this case > otherwise 'con' might cause the file read to deadlock. > https://superuser.com/questions/86999/why-cant-i-name-a-folder-or-file-con-in-wi > ndows > } |> queue.Enqueue > > let schema (pdir,text) = schema (pdir,text) |> fun x -> > LoadPackage(pdir,Some (ss_from_result x)) > let load_package_from_disk packages pdir = > trace Verbose (fun () -> > $"ServerUtils.loader_package.load_package_from_disk / pdir: {pdir}") _locals > task { > if Directory.Exists pdir then > try > let! x = File.ReadAllTextAsync(spiproj_suffix pdir) > return schema (pdir,x) > with _ -> > return LoadPackage(pdir,None) > else return LoadPackage(pdir,None) // Ditto. > } |> queue.Enqueue > let load_package_some (pdir,text) = > trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_some > / pdir: {pdir}") _locals > schema (pdir,text) |> Task.FromResult |> queue.Enqueue > let load_package_none packages pdir = > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_none > / pdir: {pdir} / pdir': {pdir'}") _locals > let pdir = pdir' > match Map.tryFind pdir packages with > | Some _ -> () > | None -> load_package_from_disk packages pdir > > let dirty_packages = HashSet() > let rec invalidate_parent packages (x : DirectoryInfo) = > if x <> null then > let x' = x.FullName |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> > $"""ServerUtils.loader_package.invalidate_parent / x.FullName: {x.FullName |> > SpiralSm.replace "\\" "|"} / x': {x'} / packages: %A{packages |> Map.keys} / > pdir: {pdir}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName packages then > dirty_packages.Add(x.FullName) |> ignore > else invalidate_parent packages x_.Parent > > let mutable packages = packages > let mutable modules = modules > > match text with > | Some text -> load_package_some (pdir,text) > | None -> > // trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: > {pdir}") _locals > match Map.tryFind pdir packages with > | Some x -> LoadPackage(pdir,Some x) |> Task.FromResult |> queue.Enqueue > | None -> load_package_from_disk packages pdir > > while 0 < queue.Count do > match queue.Dequeue().Result with > | LoadPackage(pdir,Some x) -> > let pdir' = pdir |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"ServerUtils.loader_package.LoadPackage > / pdir: {pdir} / pdir': {pdir'}") _locals > packages <- Map.add pdir' x packages; dirty_packages.Add(pdir') |> > ignore; invalidate_parent packages (Directory.GetParent(pdir')) > x.schema.packages |> List.iter (fun x -> load_package_none packages > (snd x.dir)) > let rec loop = function > | FileHierarchy.Directory(_,_,_,l) -> list l > | FileHierarchy.File(_,(_,path),_) -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"ServerUtils.loader_package.LoadPackage | FileHierarchy.File(_,(_,path),_) / > path: {path} / path': {path'}") _locals > load_module modules path' > and list l = List.iter loop l > list x.schema.modules > | LoadPackage(pdir,None) -> packages <- Map.remove pdir packages; > dirty_packages.Add(pdir) |> ignore; invalidate_parent packages > (Directory.GetParent(pdir)) > | LoadModule(mdir,Some x) -> > let mdir' = mdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package.LoadModule / > mdir: {mdir} / mdir': {mdir'}") _locals > modules <- Map.add mdir' x modules > | LoadModule(mdir,None) -> modules <- Map.remove mdir modules > packages, dirty_packages, modules > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### graph_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let graph_update (packages : SchemaEnv) (g : MirroredGraph) (dirty_packages : > string HashSet) = > Seq.fold (fun g x -> > match Map.tryFind x packages with > | Some v -> links_replace g x (v.schema.packages |> List.map (fun x -> > snd x.dir)) > | None -> links_remove g x > ) g dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_ids_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_ids_update (packages : SchemaEnv) package_ids (dirty_packages : > string HashSet) = > let adds,removals = dirty_packages |> Seq.toArray |> Array.partition (fun x > -> Map.containsKey x packages) > let adds = adds |> Array.filter (fun x -> Map.containsKey x (fst > package_ids) = false) |> Array.mapi (fun i x -> (i,x)) > let package_ids, removed_pids = removals |> Array.fold (fun ((a,b),l as s) x > -> match Map.tryFind x a with Some x' -> (Map.remove x a, Map.remove x' b), x' > :: l | None -> s) (package_ids,[[]]) > removed_pids, > if Array.isEmpty adds then package_ids else > Map.fold (fun s x _ -> > Array.mapFold (fun s x -> if s = fst x then (s+1, snd x),s+1 else x,s) x > s |> fst > ) adds (snd package_ids) > |> Array.fold (fun (a,b) (k,v) -> Map.add v k a, Map.add k v b) package_ids > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_ids_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_ids_remove (s : ResultMap<PackageId,_>) l = > List.fold (fun s x -> {ok=Map.remove x s.ok; error=Map.remove x s.error}) s > l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SignalRSupervisor > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n > et7.0/Microsoft.AspNetCore.SignalR.Core.dll" > // #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > // #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > // open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LocalizedErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LocalizedErrors = {|uri : string; errors : RString list|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TracedError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {|trace : string list; message : string|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorErrorSources > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorErrorSources = { > fatal : string Ch > tokenizer : LocalizedErrors Ch > parser : LocalizedErrors Ch > typer : LocalizedErrors Ch > package : LocalizedErrors Ch > traced : TracedError Ch > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorReq > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorReq = > | ProjectFileOpen of {|uri : string; spiprojText : string|} > | ProjectFileChange of {|uri : string; spiprojText : string|} > | ProjectFileLinks of {|uri : string|} * RString list IVar > | ProjectCodeActions of {|uri : string|} * RAction list IVar > | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|} * > {|result : string option|} IVar > | FileOpen of {|uri : string; spiText : string|} > | FileChange of {|uri : string; spiEdit : SpiEdit|} > | FileDelete of {|uris : string [[]]|} > | FileTokenRange of {|uri : string; range : VSCRange|} * int [[]] IVar > | HoverAt of {|uri : string; pos : VSCPos|} * string option IVar > | BuildFile of {|uri : string; backend : string|} * string option IVar > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorState = { > packages : SchemaEnv > modules : ModuleEnv > packages_infer : ResultMap<PackageId,ProjStateTC> > packages_prepass : ResultMap<PackageId,ProjStatePrepass> > graph : MirroredGraph > package_ids : Map<string,int> * Map<int,string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_validate default_env s dirty_packages = > let order,socs = circular_nodes s.graph dirty_packages > let packages = ss_validate s.packages s.modules (order,socs) > let packages_infer = wdiff_projenvr_tc default_env (fst s.package_ids) > packages s.modules s.packages_infer (dirty_packages, order) > order, {s with packages_infer = packages_infer; packages=packages} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_graph_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_graph_update default_env s dirty_packages = > let removed_pids,package_ids = package_ids_update s.packages s.package_ids > dirty_packages > let packages_infer, packages_prepass = package_ids_remove s.packages_infer > removed_pids, package_ids_remove s.packages_prepass removed_pids > let graph = graph_update s.packages s.graph dirty_packages > proj_validate default_env {s with graph = graph; package_ids = package_ids; > packages_infer = packages_infer; packages_prepass = packages_prepass} > dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_open default_env s (dir, text) = > let packages,dirty_packages,modules = loader_package default_env s.packages > s.modules (dir,text) > proj_graph_update default_env {s with packages = packages; modules = > modules} dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_revalidate_owner > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_revalidate_owner default_env s file = > let rec loop (x : DirectoryInfo) = > if x = null then [[||]], s > else > let x' = x.FullName |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"""Supervisor.proj_revalidate_owner / > x.FullName: {x.FullName |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName s.packages then proj_validate > default_env s (HashSet [[x.FullName]]) > elif File.Exists(spiproj_suffix x.FullName) then proj_open > default_env s (x.FullName,None) > else loop x_.Parent > loop (Directory.GetParent(file)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_delete > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_delete default_env s (files : string [[]]) = > let deleted_modules = HashSet() > let deleted_packages = HashSet() > files |> Array.iter (fun k -> > s.packages |> Map.iter (fun k' _ -> if (spiproj_suffix k').StartsWith(k) > then deleted_packages.Add(k') |> ignore) > s.modules |> Map.iter (fun k' _ -> if k'.StartsWith(k) then > deleted_modules.Add(k') |> ignore) > ) > let modules = Seq.foldBack Map.remove deleted_modules s.modules > let packages = Seq.foldBack Map.remove deleted_packages s.packages > let dirty_packages = HashSet(deleted_packages) > let revalidate_parent (x : string) = > trace Verbose (fun () -> $"Supervisor.file_delete.revalidate_parent.loop > / x.FullName: {x}") _locals > let rec loop (x : DirectoryInfo) = > if x <> null then > let x' = x.FullName |> SpiralFileSystem.standardize_path > let x = DirectoryInfo x' > if Map.containsKey x.FullName s.packages then > dirty_packages.Add(x.FullName) |> ignore > else loop x.Parent > loop(Directory.GetParent x) > Seq.iter revalidate_parent deleted_modules; Seq.iter revalidate_parent > deleted_packages > Seq.toArray deleted_modules, proj_graph_update default_env {s with modules = > modules; packages = packages} dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### AttentionState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type AttentionState = { > modules : string Set * string list > packages : string Set * string list > old_packages : SchemaEnv > supervisor : SupervisorState > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### attention_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > let attention_server (errors : SupervisorErrorSources) (req : _ Ch) = > let push path (s,o) = Set.add path s, path :: o > let add (s,o) l = Array.foldBack (fun x (s,o as z) -> if Set.contains x s > then z else Set.add x s, x :: o) l (s,o) > let update (s : AttentionState) (modules,packages,supervisor) = {modules = > add s.modules modules; packages = add s.packages packages; supervisor = > supervisor; old_packages = s.supervisor.packages} > let rec loop (s : AttentionState) = > let clear uri = > Hopac.start (Ch.send errors.tokenizer {|uri=uri; errors=[[]]|}) > Hopac.start (Ch.send errors.parser {|uri=uri; errors=[[]]|}) > Hopac.start (Ch.send errors.typer {|uri=uri; errors=[[]]|}) > let send_tokenizer uri x = Hopac.start (Ch.send errors.tokenizer > {|uri=uri; errors=x|}) > let clear_parse uri = Hopac.start (Ch.send errors.parser {|uri=uri; > errors=[[]]|}) > let clear_typer uri = Hopac.start (Ch.send errors.typer {|uri=uri; > errors=[[]]|}) > let clear_old_package x = Map.tryFind x s.old_packages |> Option.iter > (fun x -> > let rec loop = function > | FileHierarchy.File(_,(_,pdir),_) -> clear (file_uri pdir) > | FileHierarchy.Directory(_,_,_,l) -> list l > and list l = List.iter loop l > list x.schema.modules > ) > > let inline body uri interrupt ers ers' src next = > Ch.Try.take req >>= function > | Some x -> interrupt x > | None -> > if List.isEmpty ers then next ers' > else > let ers = List.append ers ers' > Hopac.start (Ch.send src {|uri=uri; errors=ers|}) > next ers > > let loop_module (s : AttentionState) mpath (m : ModuleState) = > let mpath' = mpath |> SpiralFileSystem.standardize_path > let uri = file_uri mpath > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.loop_module / mpath: {mpath} / mpath': > {mpath'} / uri: {uri}") _locals > let mpath = mpath' > > > > let interrupt x = loop (update {s with modules=push mpath s.modules} > x) > let rec bundler (r : BlockBundleState) ers' = r >>= function > | Cons((_,x),rs) -> body uri interrupt x.errors ers' > errors.parser (bundler rs) > | Nil -> loop s > send_tokenizer uri m.tokenizer.errors > clear_parse uri > clear_typer uri > bundler m.bundler [[]] > > let rec loop_package (s : AttentionState) pdir = function > | (mpath,l) :: ls -> > let mpath' = mpath |> SpiralFileSystem.standardize_path > let uri = file_uri mpath > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.loop_package / mpath: {mpath} / mpath': > {mpath'} / uri: {uri} / pdir: {pdir} / pdir': {pdir'}") _locals > let interrupt x = loop (update {s with packages=push pdir > s.packages} x) > let rec typer (r : TypecheckerStateValue Stream) ers' = r >>= > function > | Cons((_,x,_),rs) -> body uri interrupt x.errors ers' > errors.typer (typer rs) > | Nil -> loop_package s pdir' ls > let rec bundler (r : BlockBundleState) ers' = r >>= function > | Cons((_,x),rs) -> body uri interrupt x.errors ers' > errors.parser (bundler rs) > | Nil -> clear_typer uri; typer l [[]] > let m = s.supervisor.modules.[[mpath']] > send_tokenizer uri m.tokenizer.errors > clear_parse uri > bundler m.bundler [[]] > | [[]] -> loop s > > let package s = > match s.packages with > | se,x :: xs -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.package / x: {x} / x': {x'}") _locals > let x = x' > let s = {s with packages=Set.remove x se,xs} > let package_errors = > match Map.tryFind x s.supervisor.packages with > | Some v -> List.concat [[v.errors_parse; v.errors_modules; > v.errors_packages]] > | None -> [[]] > Hopac.start (Ch.send errors.package > ({|uri=file_uri(spiproj_suffix x); errors=package_errors|})) > clear_old_package x > match Map.tryFind x (fst s.supervisor.package_ids) with > | Some uid -> > match Map.tryFind uid s.supervisor.packages_infer.ok with > | Some v -> > let path_tcvals = > let uids_file = v.files.uids_file > let rec loop x s = > match x with > | ProjFilesTree.File(mid,path,_) -> > let path' = path |> > SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop | WDiff.File(mid,path,_) / path: {path} / > path': {path'}") _locals > (path', (fst uids_file.[[mid]]).result) :: s > | ProjFilesTree.Directory(_,_,l) -> list l s > and list l s = List.foldBack loop l s > list v.files.files.tree [[]] > loop_package s x path_tcvals > | None -> loop s > | None -> loop s > | _, [[]] -> req >>= (update s >> loop) > > match s.modules with > | se,x :: xs -> > let s = {s with modules=Set.remove x se,xs} > match Map.tryFind x s.supervisor.modules with > | Some v -> loop_module s x v > | None -> clear (file_uri x); package s > | _,[[]] -> package s > > (req >>= fun (modules,packages,supervisor) -> > loop {modules = Set.ofArray modules, Array.toList modules; packages = > Set.ofArray packages, Array.toList packages; supervisor = supervisor; > old_packages = Map.empty} > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_position > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_position (s : SupervisorState) (x : Range) = > let line = (fst x.range).line > let col = (fst x.range).character > let er_code = s.modules.[[x.path]].tokenizer.lines_text.[[line]] > System.Text.StringBuilder() > .AppendLine(sprintf "Error trace on line: %i, column: %i in module: %s." > (line+1) (col+1) x.path) > .AppendLine(er_code) > .Append(' ',col) > .AppendLine("^") > .ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_trace s (x : Trace) (msg : string) = > let rec loop (l : Trace) = function > | (x : Range) :: xs -> > match l with > | x' :: _ when x.path = x'.path && fst x.range = fst x'.range -> > loop l xs > | _ -> loop (x :: l) xs > | _ -> l > List.map (show_position s) (loop [[]] x), msg > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BuildResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BuildResult = > | BuildOk of {|code: string; file_extension : string|} list > | BuildErrorTrace of string list * string > | BuildFatalError of string > | BuildSkip > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### targetDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### traceDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let traceDir = targetDir </> "supervisor_trace" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dir uri = > let result = > System.IO.FileInfo(System.Uri(uri).LocalPath).Directory.FullName > let result' = result |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"Supervisor.dir / uri: {uri} / result: {result} / > result': {result'}") _locals > result' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file uri = > let result = > try > System.IO.FileInfo(System.Uri(uri).LocalPath).FullName > with ex -> > trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / ex: > %A{ex}") _locals > uri > let result' = result |> SpiralFileSystem.standardize_path > // let result = result |> SpiralSm.replace "\\" "|" > // trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / result: > {result} / result': {result'}") _locals > result' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### supervisor_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > let supervisor_server (default_env : DefaultEnv) atten (errors : > SupervisorErrorSources) req = > let fatal x = Hopac.start (Ch.send errors.fatal x) > let handle_packages (dirty_packages,s) = Hopac.start (Ch.send atten > ([[||]],dirty_packages,s)); s > let handle_file_packages file (dirty_packages,s) = Hopac.start (Ch.send > atten ([[|file|]],dirty_packages,s)); s > let handle_files_packages (dirty_files,(dirty_packages,s)) = Hopac.start > (Ch.send atten (dirty_files,dirty_packages,s)); s > let loop (s : SupervisorState) = req >>- function > | ProjectFileChange x | ProjectFileOpen x -> proj_open default_env s > (dir x.uri,Some x.spiprojText) |> handle_packages > | FileOpen x -> > let file = file x.uri > // trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileOpen / x: %A{x} / file: {file}") _locals > match Map.tryFind file s.modules with > | Some m -> wdiff_module_all default_env m x.spiText > | None -> wdiff_module_init_all default_env (is_top_down file) > x.spiText > |> fun v -> proj_revalidate_owner default_env {s with modules = > Map.add file v s.modules} file > |> handle_file_packages file > | FileChange x -> > let file = file x.uri > trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileChange / x: %A{x} / file: {file}") > _locals > match Map.tryFind file s.modules with > | None -> fatal "It is not possible to apply a change to a file that > is not present in the environment. Try reopening it in the editor."; s > | Some m -> > match wdiff_module_edit default_env m x.spiEdit with > | Result.Ok v -> proj_revalidate_owner default_env {s with > modules = Map.add file v s.modules} file |> handle_file_packages file > | Result.Error er -> fatal er; s > | FileDelete x -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileDelete / x: {x}") _locals > file_delete default_env s (Array.map file x.uris) |> > handle_files_packages > | ProjectFileLinks(x,res) -> > let l = > match Map.tryFind (dir x.uri) s.packages with > | None -> [[]] > | Some x -> > let mutable l = [[]] > x.schema.packages |> List.iter (fun x -> > let r,dir = x.dir > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectFileLinks / x.schema.packages |> List.iter > / dir: {dir}") _locals > if Map.containsKey dir s.packages then l <- (r,file_uri > (spiproj_suffix dir)) :: l > ) > let rec loop = function > | FileHierarchy.Directory(_,_,_,l) -> list l > | FileHierarchy.File(_,(r,path),_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectFileLinks.loop | > SpiProj.FileHierarchy.File(_,(r,path),_) / path: {path}") _locals > if Map.containsKey path s.modules then l <- > (r,file_uri path) :: l > and list l = List.iter loop l > list x.schema.modules > l > Hopac.start (IVar.fill res l) > s > | ProjectCodeActions(x,res) -> > let z = > match Map.tryFind (dir x.uri) s.packages with > | None -> [[]] > | Some x -> > let mutable z = [[]] > let actions_dir (r,path) = > match r with > | None -> () > | Some r -> > if Directory.Exists(path) then > z <- (r,RenameDirectory {|dirPath=path; > target=null; validate_as_file=false|}) :: (r,DeleteDirectory {|dirPath=path; > range=r|}) :: z > else > z <- (r,CreateDirectory {|dirPath=path|}) :: z > actions_dir x.schema.moduleDir > actions_dir x.schema.packageDir > > let rec actions_module = function > | FileHierarchy.Directory(r',(r,path),_,l) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | > SpiProj.FileHierarchy.Directory(r',(r,path),_,l) / path: {path}") _locals > if Directory.Exists(path) then > z <- (r,RenameDirectory {|dirPath=path; > target=null; validate_as_file=true|}) :: (r,DeleteDirectory {|dirPath=path; > range=r'|}) :: z > else > z <- (r,CreateDirectory {|dirPath=path|}) :: z > actions_modules l > | FileHierarchy.File(r',(r,path),_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | > SpiProj.FileHierarchy.File(r',(r,path),_) / path: {path}") _locals > if Map.containsKey path s.modules then > z <- (r,RenameFile {|filePath=path; > target=null|}) :: (r,DeleteFile {|range=r'; filePath=path|}) :: z > else > z <- (r,CreateFile {|filePath=path|}) :: z > and actions_modules l = List.iter actions_module l > actions_modules x.schema.modules > z > Hopac.start (IVar.fill res z) > s > | ProjectCodeActionExecute(x,res) -> > let error, s = > match code_action_execute x.action with > | Result.Error x -> Some x, s > | Result.Ok null -> None, proj_open default_env s (dir > x.uri,None) |> handle_packages > | Result.Ok path -> None, file_delete default_env s [[|path|]] > |> handle_files_packages > Hopac.start (IVar.fill res {|result=error|}) > s > | FileTokenRange(x, res) -> > let v = > match Map.tryFind (file x.uri) s.modules with > | Some v -> Some v > | None when x.uri |> SpiralSm.ends_with ".dib" -> > x.uri > |> SpiralSm.replace "file:///" "" > |> File.ReadAllText > |> wdiff_module_init_all default_env (is_top_down x.uri) > |> Some > | None -> None > > match v with > | Some v -> > Hopac.start (semantic_tokens v.parser >>= (vscode_tokens x.range > >> IVar.fill res)) > | None -> > if x.uri |> SpiralSm.starts_with "vscode-notebook-cell" |> not > then > trace Debug > (fun () -> > $"Supervisor.supervisor_server.FileTokenRange") > (fun () -> $"module=None / x.uri: {x.uri} / {_locals > ()}") > > Hopac.start (IVar.fill res [[||]]) > s > | HoverAt(x,res) -> > let file = file x.uri > let pos = x.pos > let _locals () = $"x: %A{x} / file: {file} / res: %A{res}" > trace Verbose (fun () -> $"Supervisor.supervisor_server.HoverAt") > _locals > let go_hover x = > match x with > | None -> None > | Some (x : InferResult) -> > x.hovers |> Array.tryPick (fun ((a,b),r) -> > if pos.line = a.line && (a.character <= pos.character && > pos.character < b.character) then Some r else None > ) > |> (fun x -> > let _locals () = $"x: %A{x}" > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_hover") _locals > x > ) > |> IVar.fill res > let go_block (x : TypecheckerState) = > let rec loop s (x : TypecheckerStateValue Stream) = > x >>= function > | Nil -> go_hover s > | Cons((_,x,_),b) -> > let _locals () = $"b: {b}" > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_block.loop Cons") _locals > if x.offset <= pos.line then loop (Some x) b > // If the block is over the offset that means the > previous one must be the right choice. > else go_hover s > Hopac.start (loop None x.result) > let rec go_file uids_file trees = > let rec loop = function > | ProjFilesTree.File(uid,file',_) -> if file = file' then > go_block (Array.get uids_file uid |> fst); true else false > | ProjFilesTree.Directory(_,_,l) -> list l > and list l = List.exists loop l > list trees > let rec go_parent (x : DirectoryInfo) = > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_parent / x: %A{x}") _locals > if x = null then false > else > let path = x.FullName |> SpiralFileSystem.standardize_path > if Map.containsKey path s.packages then > let pid = (fst s.package_ids).[[path]] > match Map.tryFind pid s.packages_infer.ok with > | None -> false > | Some x -> go_file x.files.uids_file x.files.files.tree > else > go_parent x.Parent > if go_parent (Directory.GetParent(file)) = false then Hopac.start > (IVar.fill res None) > s > | BuildFile (x, res) -> > let backend = x.backend > let file = file x.uri > let _locals () = $"x: %A{x} / file: {file}" > trace Verbose (fun () -> $"Supervisor.supervisor_server.BuildFile") > _locals > let handle_build_result = function > | BuildOk l -> > Job.fromAsync (async { > for x in l do > do! > System.IO.File.WriteAllTextAsync(System.IO.Path.ChangeExtension(file,x.file_exte > nsion), x.code) |> Async.AwaitTask > }) > |> Hopac.start > l > |> List.map (fun x -> x.code) > |> String.concat "\n" > |> Some > |> IVar.fill res > | BuildFatalError x as x' -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildFatalError > x: %A{x}") _locals > Hopac.start (Ch.send errors.fatal x) > IVar.fill res None > | BuildErrorTrace(a,b) as x' -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildErrorTrace > x': %A{x'}") _locals > Hopac.start (Ch.send errors.traced {|trace=a; message=b|}) > IVar.fill res None > | BuildSkip -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result.BuildSkip") _locals > IVar.fill res None > let file_build (s : SupervisorState) mid (tc : ProjStateTC, prepass > : ProjStatePrepass) = > trace Verbose (fun () -> > $"""Supervisor.supervisor_server.BuildFile.file_build / modules: > %A{s.modules.Keys |> SpiralSm.concat ", "} / packages: %A{s.packages.Keys |> > SpiralSm.concat ", "} / package_ids: %A{s.package_ids |> fst |> fun x -> x.Keys > |> SpiralSm.concat ", "}""") _locals > let a,b = tc.files.uids_file.[[mid]] > let x,_x = prepass.files.uids_file.[[mid]] > Hopac.start (a.state >>= fun (has_error',_) -> > b >>= fun (has_error,_) -> > if has_error || has_error' then fatal $"File > {Path.GetFileNameWithoutExtension file} has a type error somewhere in its > path."; Job.unit() else > Stream.foldFun (fun _ (_,_,env) -> env) top_env_emptyPrepass > x.result >>= fun env -> > let body() = > match Map.tryFind "main" env.term with > | Some main -> > let prototypes_instances = > Dictionary(env.prototypes_instances) > let nominals = > let t = HashConsTable() > let d = Dictionary() > env.nominals |> Map.iter (fun k v -> d.Add(k, > t.Add {|v with id=k|})) > d > try > let build codegen backend file_extension = > let (a,_),b = peval > {prototypes_instances=prototypes_instances; nominals=nominals; backend=backend} > main > BuildOk [[{|code = codegen b a; > file_extension = file_extension|}]] > match backend with > | "Gleam" -> build codegenGleam "Gleam" "gleam" > | "Fsharp" -> build codegenFsharp "Fsharp" "fsx" > | "C" -> build CodegenC.codegenC "C" "c" > | "Python + Cuda" -> build > (CodegenPython.codegenPython default_env) "Python" "py" > | "Cuda C++" -> BuildFatalError "The host C++ > backend originally made for FPGAs, and then ported to Cuda has been removed in > v2.10.0 of Spiral. Please use an earlier version to access it." // Date: > 5/8/2024 > | "Python" -> BuildFatalError "The prototype > Python backend has been replaced by the Python + Cuda one in v2.5.0 of Spiral. > Please use an earlier version to access it." // Date: 11/3/2023 > | "UPMEM: Python + C" -> BuildFatalError "The > UPMEM Python + C backend has been replaced by the Python + Cuda one in v2.5.0 of > Spiral. Please use an earlier version to access it." // Date: 11/3/2023 > | "HLS C++" -> BuildFatalError "The HLS C++ > backend has been replaced by the Cuda one in v2.5.0 of Spiral. Please use an > earlier version to access it." // Date: 10/17/2023 > | "Cython*" | "Cython" -> BuildFatalError "The > Cython backend has been replaced by the Python one in v2.3.1 of Spiral. Please > use an earlier version to access it." // Date: 12/27/2022 > | _ -> BuildFatalError $"Cannot recognize the > backend: {backend}" > with > | :? PartEvalTypeError as e -> > BuildErrorTrace(show_trace s e.Data0 e.Data1) > | :? CodegenError as e -> > BuildFatalError(e.Data1) > | :? CodegenErrorWithPos as e -> > BuildErrorTrace(show_trace s e.Data0 e.Data1) > | ex -> > if System.IO.Directory.Exists traceDir then > let guid = System.DateTime.Now |> > SpiralDateTime.new_guid_from_date_time > let trace_file = traceDir </> > $"{guid}_error.json" > async { > try > do! $"{ex}" |> > SpiralFileSystem.write_all_text_async trace_file > with ex -> > trace Critical (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_build / ex: {ex |> > SpiralSm.format_exception}") _locals > } > |> Async.Start > trace Critical (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_build / ex: %A{ex}") _locals > BuildFatalError(ex.Message) > | None -> BuildFatalError $"Cannot find `main` in file > {Path.GetFileNameWithoutExtension file}." > > // The partial evaluator is using too much stack space, so > as a temporary fix, I am running it on a separate thread with much more of it. > let result = IVar() > let thread = new > System.Threading.Thread(System.Threading.ThreadStart(body >> IVar.fill result >> > Hopac.start), 1 <<< 28) // Stack space = 2 ** 28 = 256mb. > thread.Start() > result >>= handle_build_result > ) > let file_find (s : SupervisorState) pdir = > trace Verbose (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_find / pdir: {pdir}") _locals > let uid = (fst s.package_ids).[[pdir]] > match Map.tryFind uid s.packages_infer.ok, Map.tryFind uid > s.packages_prepass.ok with > | Some a, Some b -> > let rec loop = function > | ProjFilesTree.Directory(_,_,l) -> list l > | ProjFilesTree.File(mid,path,_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_find.loop | File(mid,path,_) / > path: {path}") _locals > if file = path then file_build s mid (a, b); true > else false > and list l = List.exists loop l > if list b.files.files.tree = false then fatal $"File > {Path.GetFileNameWithoutExtension file} cannot be found in the project > {spiproj_suffix pdir}" > > s > | None, None -> fatal $"Owner of file > {Path.GetFileNameWithoutExtension file} has an error. Location: {spiproj_suffix > pdir}"; s > | _ -> failwith "Compiler error: The project status should be > the same in both infer and prepass." > let update_owner pdir = > let order,dirty_packages = topological_sort' (fst s.graph) > [[pdir]] > let packages_prepass = wdiff_projenvr_prepass default_env (fst > s.package_ids) s.packages s.packages_infer.ok s.packages_prepass > (dirty_packages, order.ToArray()) > file_find {s with packages_prepass = packages_prepass} pdir > let rec find_owner (x : DirectoryInfo) = > if x = null then fatal $"Cannot find the package file of > {file}"; s > else > let x' = x.FullName |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"""Supervisor.supervisor_server.BuildFile.find_owner / x.FullName: {x.FullName > |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName s.packages then update_owner > x.FullName > else find_owner x_.Parent > find_owner (Directory.GetParent(file)) > > Job.iterateServer { > packages = Map.empty > modules = Map.empty > packages_infer = {ok=Map.empty; error=Map.empty} > packages_prepass = {ok=Map.empty; error=Map.empty} > graph = mirrored_graph_empty > package_ids = Map.empty, Map.empty > } loop > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClientReq > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientReq = > | ProjectFileOpen of {|uri : string; spiprojText : string|} > | ProjectFileChange of {|uri : string; spiprojText : string|} > | ProjectFileLinks of {|uri : string|} > | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|} > | ProjectCodeActions of {|uri : string|} > | FileOpen of {|uri : string; spiText : string|} > | FileChange of {|uri : string; spiEdit : SpiEdit|} > | FileDelete of {|uris : string [[]]|} // Also works for project files and > directories. > | FileTokenRange of {|uri : string; range : VSCRange|} > | HoverAt of {|uri : string; pos : VSCPos|} > | BuildFile of {|uri : string; backend : string|} > | Ping of bool > | Exit of bool > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClientErrorsRes > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {|uri : string; errors : RString list|} > | TokenizerErrors of {|uri : string; errors : RString list|} > | ParserErrors of {|uri : string; errors : RString list|} > | TypeErrors of {|uri : string; errors : RString list|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Supervisor > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Supervisor = { > supervisor_ch : SupervisorReq Ch > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## new_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n > et7.0/Microsoft.AspNetCore.SignalR.Core.dll" > // #r > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > 0/System.Management.dll" > // #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > // #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > // #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > // #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/9.0.0 > /lib/net9.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 9.0.0/lib/net9.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > " > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > ons.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > t9.0/Microsoft.Extensions.Logging.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > ons.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > // open Common > > ── fsharp ────────────────────────────────────────────────────────────────────── > let new_server () = > let event = Event<ClientErrorsRes> () > // let disposable' = connection.On<string> ("ServerToClientMsg", > event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg, ()) > }) > () > > let error_ch_create msg = > let x = Ch() > Hopac.server (Job.forever (Ch.take x >>= ( > msg >> fun (x : ClientErrorsRes) -> > Hopac.Job.awaitUnitTask ( > task { > event.Trigger x > trace Verbose (fun () -> $"spiral_compiler.new_server / > error_ch_create / x: %A{x}") (fun () -> "") > () > } > |> (fun (x : System.Threading.Tasks.Task<unit>) -> x :> > System.Threading.Tasks.Task) > ) > ))) > x > > let errors : SupervisorErrorSources = { > fatal = error_ch_create FatalError > package = error_ch_create PackageErrors > tokenizer = error_ch_create TokenizerErrors > parser = error_ch_create ParserErrors > typer = error_ch_create TypeErrors > traced = error_ch_create TracedError > } > let supervisor = Ch() > let atten = Ch() > > do Hopac.server (attention_server errors atten) > > let args = [[| "--port"; "0" |]] > let env = parseStartup args > do Hopac.start (supervisor_server env atten errors supervisor) > > let job_null job = > job > |> Hopac.start > task { return null } > let serialize (x : obj) = > match x with > | null -> null > | :? Option<string> as x -> x.Value > | _ -> FSharp.Json.Json.serialize x > let job_val job = > let res = IVar() > let job' = > job res > Hopac.queueAsTask (job' >>=. IVar.read res >>- serialize) > {| > job_null = job_null > job_val = job_val > errors = stream > supervisor = supervisor > |} > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > > let server = new_server<Job<unit>, obj, string option, Job<unit>, unit> () > async { > (* > let fullPath = Supervisor.workspaceRoot </> > "deps/spiral/lib/spiral/package.spiproj" > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async > let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |} > let! projectFileOpenResult = > job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen > projectFileOpenArgs) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: > %A{projectFileOpenResult}") (fun () -> "") > do! Async.Sleep 500 > > let fullPath = > "C:/home/git/polyglot/target/spiral_Eval/packages/00b4ba49258747d295857ee25629c7 > b59c75cf4ab06958a0e3b0680ae9062d87/package.spiproj" > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async > let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |} > let! projectFileOpenResult = > job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen > projectFileOpenArgs) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: > %A{projectFileOpenResult}") (fun () -> "") > do! Async.Sleep 500 > *) > let code = "inl main () = 1i32 + 1" > let struct (fullPath, disposable) = SpiralFileSystem.create_temp_dir () > use _ = disposable > let fullPathSpi = fullPath </> "main.spi" > do! code |> SpiralFileSystem.write_all_text_async fullPathSpi > let fullPathSpiproj = fullPath </> "package.spiproj" > do! "packages:\n |core-\nmodules:\n main\n" |> > SpiralFileSystem.write_all_text_async fullPathSpiproj > // let x = code |> Supervisor.persistCode > let fullPathUri = fullPathSpi |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > // let! code = fullPath |> SpiralFileSystem.read_all_text_async > let fileOpenArgs = {| uri = fullPathUri; spiText = code |} > let! fileOpenResult = > server.job_null (server.supervisor *<+ SupervisorReq.FileOpen > fileOpenArgs) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 20000 > |> Async.map Option.get > trace Info (fun () -> $"spiral_compiler.run / FileOpen / fileOpenResult: > %A{fileOpenResult}") (fun () -> "") > > // do! Async.Sleep 500 > > let backendId = "Fsharp" > let buildFileArgs = {| uri = fullPathUri; backend = backendId |} > let! buildFileResult = > server.job_val (fun res -> server.supervisor *<+ > SupervisorReq.BuildFile(buildFileArgs,res)) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 15000 > |> Async.map Option.get > trace Info (fun () -> $"spiral_compiler.run / BuildFile / buildFileResult: > %A{buildFileResult}") (fun () -> "") > return buildFileResult > > > (* > let lines = code |> SpiralSm.split "\n" > let fileTokenRangeArgs = > {| > uri = fullPathUri > range = > {| > line = 0 > character = 0 > |}, > {| > line = lines.Length - 1 > character = lines.[[lines.Length - 1]].Length > |} > |} > let! fileTokenRangeResult = > job_val (fun res -> supervisor *<+ > Supervisor.SupervisorReq.FileTokenRange(fileTokenRangeArgs,res)) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.FileTokenRange / fileTokenRangeResult: > %A{fileTokenRangeResult.Length}") (fun () -> "") > *) > } > |> Async.runWithTimeout 10000 > |> Option.map (fun x -> x |> SpiralSm.replace "\r\n" "\n") > |> _assertEqual (Some "2\n") > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 2.52s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (5,14)-(5,24) typecheck warning The method or > function 'new_server' should not be given explicit type argument(s) because it > does not declare its type parameters explicitly > > ── [ 2.52s - stdout ] ────────────────────────────────────────────────────────── > │ 00:01:32 i #1 spiral_compiler.run / FileOpen / > fileOpenResult: <null> > │ 00:01:33 i #320 spiral_compiler.run / BuildFile / > buildFileResult: "2 > │ " > │ Some "2 > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getParentProcessId > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getParentProcessId () = > if SpiralPlatform.is_windows () |> not > then 0u > else > let pid = System.Diagnostics.Process.GetCurrentProcess().Id > let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId > = {pid}" > use searcher = new System.Management.ManagementObjectSearcher (query) > use results = searcher.Get () > let data = results |> Seq.cast<System.Management.ManagementObject> > if data |> Seq.isEmpty > then 0u > else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## assemblyName > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assemblyName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startParentWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startParentWatcher () = > if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then > let parentAsyncChild = async { > let parentProcessId = getParentProcessId () > trace Verbose > (fun () -> "spiral_compiler.startParentWatcher") > (fun () -> $"parentProcessId: {parentProcessId} / {_locals ()}") > > if parentProcessId > 0u then > let parentProcess = parentProcessId |> int |> > System.Diagnostics.Process.GetProcessById > do! parentProcess.WaitForExitAsync () |> Async.AwaitTask > trace Debug > (fun () -> "spiral_compiler.startParentWatcher / Parent > process has exited. Performing cleanup...") > (fun () -> $"{_locals ()}") > System.Threading.Thread.Sleep 1000 > System.Environment.Exit 1 > } > > parentAsyncChild |> Async.Start > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SpiralHub > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > // open Common > open SpiralFileSystem.Operators > > open FSharp.Json > open Microsoft.AspNetCore.SignalR > open Microsoft.AspNetCore.SignalR.Client > > type SpiralHub(supervisor : Supervisor) = > inherit Hub() > > member _.ClientToServerMsg (x : string) = > let job_null job = Hopac.start job; task { return null } > > let serialize (x : obj) = > match x with > | null -> null > | :? Option<string> as x -> x.Value > | _ -> Json.serialize x > > let job_val job = let res = IVar() in Hopac.queueAsTask (job res >>=. > IVar.read res >>- serialize) > let supervisor = supervisor.supervisor_ch > > let client_req = Json.deserialize x > > if Directory.Exists traceDir then > match client_req with > | Ping _ -> () > | _ -> > let req_name = client_req.GetType().Name > let guid = System.DateTime.Now |> > SpiralDateTime.new_guid_from_date_time > let trace_file = traceDir </> $"{guid}_{req_name}.json" > > async { > do! Async.Sleep 500 > try > do! x |> SpiralFileSystem.write_all_text_async > trace_file > with ex -> > trace Critical (fun () -> $"SpiralHub.ClientToServerMsg > / ex: {ex |> SpiralSm.format_exception}") _locals > } > |> Async.Start > > match client_req with > | ProjectFileOpen x -> job_null (supervisor *<+ > SupervisorReq.ProjectFileOpen x) > | ProjectFileChange x -> job_null (supervisor *<+ > SupervisorReq.ProjectFileChange x) > | ProjectCodeActionExecute x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectCodeActionExecute(x,res)) > | ProjectFileLinks x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectFileLinks(x,res)) > | ProjectCodeActions x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectCodeActions(x,res)) > | FileOpen x -> job_null (supervisor *<+ SupervisorReq.FileOpen x) > | FileChange x -> job_null (supervisor *<+ SupervisorReq.FileChange x) > | FileDelete x -> job_null (supervisor *<+ SupervisorReq.FileDelete x) > | FileTokenRange x -> job_val (fun res -> supervisor *<+ > SupervisorReq.FileTokenRange(x,res)) > | HoverAt x -> job_val (fun res -> supervisor *<+ > SupervisorReq.HoverAt(x,res)) > | BuildFile x -> job_val (fun res -> supervisor *<+ > SupervisorReq.BuildFile(x,res)) > | Ping _ -> task { return null } > | Exit _ -> > async { > trace Debug (fun () -> "Supervisor.SpiralHub.ClientToServerMsg / > exiting...") _locals > async { > do! Async.Sleep 300 > System.Diagnostics.Process.GetCurrentProcess().Kill () > } > |> Async.Start > return null > } > |> Async.StartAsTask > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Microsoft.AspNetCore.Builder > open Microsoft.AspNetCore.Hosting > open Microsoft.Extensions.DependencyInjection > open Microsoft.Extensions.Logging > > let main args = > SpiralTrace.TraceLevel.US0_1 |> set_trace_level > // Scheduler.Global.setCreate { Scheduler.Create.Def with MaxStackSize = > 1024 * 8192 |> Some } > > let env = parseStartup args > > let uri_server = $"http://localhost:{env.port}" > > printfn "Server bound to: %s" uri_server > trace Debug (fun () -> $"pwd: {System.Environment.CurrentDirectory}") > _locals > let dllPath = System.Reflection.Assembly.GetExecutingAssembly().Location |> > System.IO.Path.GetDirectoryName > trace Debug (fun () -> $"dllPath: {dllPath}") _locals > trace Debug (fun () -> $"targetDir: {targetDir}") _locals > let builder = Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder() > builder.Logging.SetMinimumLevel LogLevel.Warning |> ignore > builder.Services > .AddCors() > .AddSignalR(fun x -> > x.MaximumReceiveMessageSize <- 1 <<< 20 // 1mb > x.EnableDetailedErrors <- true > ) |> ignore > > builder.Services > .AddSingleton<Supervisor>(fun s -> > let hub = s.GetService<IHubContext<SpiralHub>>() > let broadcast x = > hub.Clients.All.SendCoreAsync("ServerToClientMsg",[[|Json.serialize x|]]) > > let server = new_server () > > server.errors > |> FSharp.Control.AsyncSeq.mapAsync (fun x -> > broadcast x |> Async.AwaitTask > ) > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun x -> async { () }) > |> Async.StartChild > |> Async.RunSynchronously > |> ignore > > {supervisor_ch=server.supervisor} > ) |> ignore > builder.WebHost.UseUrls [[|uri_server|]] |> ignore > builder.Logging.SetMinimumLevel(LogLevel.Warning) |> ignore > > let app = builder.Build() > app.UseCors(fun x -> > x.SetIsOriginAllowed(fun _ -> true) > .AllowAnyHeader() > .AllowAnyMethod() > .AllowCredentials() |> ignore > ) |> ignore > app.MapHub<SpiralHub> "" |> ignore > > // use _ = Eval.startTokenRangeWatcher () > startParentWatcher () > // use _ = Eval.startCommandsWatcher uri_server > > printfn $"Starting the Spiral Server. It is bound to: {uri_server}" > app.Run() > 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > // SpiralHub.main [[|"--port"; "13805"|]] 00:01:54 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 907807 } 00:01:54 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:55 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb to html 00:01:55 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:55 v #7 ! validate(nb) 00:01:56 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:56 v #9 ! return _pygments_highlight( 00:02:23 v #10 ! [NbConvertApp] Writing 4811957 bytes to c:\home\git\spiral\apps\compiler\spiral_compiler.dib.html 00:02:23 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 875 } 00:02:23 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 875 } 00:02:23 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:23 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:23 d #16 spiral.run / dib / { exit_code = 0; result_length = 908741 } 00:00:00 d #1 writeDibCode / output: Fs / path: spiral_compiler.dib 00:00:00 d #2 parseDibCode / output: Fs / file: spiral_compiler.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash: / code.Length: 814549 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 288 ms). 00:00:12 v #7 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:12 v #8 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10600,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:13 v #9 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11420,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:13 v #10 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12350,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:13 v #11 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13016,71): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:31 v #12 > spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\linux-x64\spiral_compiler.dll 00:00:32 v #13 > spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\ 00:00:32 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 3020; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:32 d #15 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:33 v #16 > Determining projects to restore... 00:00:33 v #17 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:33 v #18 > The last full restore is still up to date. Nothing left to do. 00:00:33 v #19 > Total time taken: 0 milliseconds 00:00:34 v #20 > Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 274 ms). 00:00:35 v #21 > spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\spiral_compiler.dll 00:00:36 v #22 > spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\ 00:00:36 d #23 runtime.execute_with_options_async / { exit_code = 0; output_length = 478; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_compiler spiral/apps/compiler/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: spiral_compiler / $env:CI:'' spiral/apps/spiral/build.ps1 / ScriptDir: C:\home\git\spiral\apps\spiral / ResolvedScriptDir: C:\home\git\spiral\apps\spiral polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\spiral / ResolvedLocation: C:\home\git\spiral\apps\spiral polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\spiral/spiral.dib", "--working-directory", "C:\home\git\polyglot"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/spiral/spiral.dib", "--output-path", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/spiral/spiral.dib" --output-path "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral > > ── spiral ────────────────────────────────────────────────────────────────────── > open file_system_operators > open rust.rust_operators > open rust > open sm'_operators > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## get_args > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_args () = > { > fsharp = "fsharp", { > spi_path = "spi-path", 's' > } > gleam = "gleam", { > gleam_path = "gleam-path", 'g' > deps = "deps", 'd' > } > cuda = "cuda", { > py_path = "py-path", 'p' > env = "env", 'e' > deps = "deps", 'd' > } > fable = "fable", { > fs_path = "fs-path", 'f' > command = "command", 'c' > } > rust = "rust", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > wasm = "wasm", 'w' > contract = "contract", 'c' > cleanup = "cleanup", 'l' > } > typescript = "typescript", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > } > python = "python", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > } > dib = "dib", { > path = "path", 'p' > retries = "retries", 'r' > working_directory = "working-directory", 'w' > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## cuda_env > > ── spiral ────────────────────────────────────────────────────────────────────── > union cuda_env = > | Pip > | Poetry > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## get_command > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_command () = > ##"command" > |> runtime.new_command > |> runtime.command_subcommand_required true > |> runtime.command_subcommand ( > ##(get_args () .fsharp |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) ( > runtime.arg_required true > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .gleam |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .gleam |> snd).gleam_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .cuda |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .cuda |> snd).env) ( > real runtime.arg_union `cuda_env ignore > ) > |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .fable |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .fable |> snd).command) ( > id > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .rust |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).contract) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).cleanup) ( > runtime.arg_default_value "true" > >> runtime.arg_action runtime.SetFalse > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .typescript |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .python |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .python |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .dib |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .dib |> snd).path) ( > runtime.arg_required true > // >> runtime.arg_value_parser (runtime.value_parser_path_buf ()) > ) > |> runtime.command_init_arg ((get_args () .dib |> snd).retries) ( > runtime.arg_value_parser (runtime.value_parser_expr "u8") > ) > |> runtime.command_init_arg ((get_args () .dib |> > snd).working_directory) ( > id > ) > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## fable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fable_target > > ── spiral ────────────────────────────────────────────────────────────────────── > union fable_target = > | Rust > | TypeScript > | Python > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fable_runtime > > ── spiral ────────────────────────────────────────────────────────────────────── > union fable_runtime = > | Wasm : string > | Contract : string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### execute_dotnet_fable > > ── spiral ────────────────────────────────────────────────────────────────────── > let execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime } = > open runtime > execution_options fun x => { x with > command = > inl platform = > if platform.is_windows () > then "_WINDOWS" > else "_LINUX" > inl platform : string = $'$" --define {!platform}"' > inl runtime = > match runtime with > | Some (runtime : fable_runtime) => > inl runtime = runtime |> reflection.union_to_string |> > sm'.to_upper > $'$" --define {!runtime}"' > | None => "" > $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang > {!extension} --extension .{!extension} --outDir > \\\"{!package_dir}\\\"{!platform}{!runtime}"' > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> execute_retry 3u8 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_package_dir > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_package_dir { workspace_root target name hash } = > inl dir = workspace_root </> "target/spiral" </> name > match hash, (target : option fable_target) with > | Some hash, Some target => dir </> "packages" </> (target |> > reflection.union_to_string) </> hash > | _ => dir > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persist_code_project > > ── spiral ────────────────────────────────────────────────────────────────────── > let persist_code_project { workspace_root package_dir packages modules name code > } = > package_dir |> file_system.create_dir |> ignore > > inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path > code |> file_system.write_all_text_exists fs_path > > inl modules_code = > modules > |> listm.map fun path => > inl path = workspace_root </> path > $'$"<Compile Include=\\\"{!path}\\\" />"' : string > |> listm'.box > |> seq.of_list' > |> sm'.concat "\\n " > > inl packages_code = > packages > |> listm.map fun (package : string), (version : string) => > $'$"<PackageReference Include=\\\"{!package}\\\" > Version=\\\"{!version}\\\" />"' : string > |> listm'.box > |> seq.of_list' > |> sm'.concat "\\n " > > inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |> > file_system.normalize_path > inl fsproj_code : string = > $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"' > +#. $'$"<PropertyGroup>"' > +#. $'$" <TargetFramework>net9.0</TargetFramework>"' > +#. $'$" <LangVersion>preview</LangVersion>"' > +#. $'$" <RollForward>Major</RollForward>"' > +#. $'$" <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"' > +#. $'$" <PublishAot>false</PublishAot>"' > +#. $'$" <PublishTrimmed>false</PublishTrimmed>"' > +#. $'$" <PublishSingleFile>true</PublishSingleFile>"' > +#. $'$" <SelfContained>true</SelfContained>"' > +#. $'$" <Version>0.0.1-alpha.1</Version>"' > +#. $'$" <OutputType>Exe</OutputType>"' > +#. $'$" <ServerGarbageCollection>true</ServerGarbageCollection>"' > +#. $'$" > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>"' > +#. $'$"</PropertyGroup>"' > > +#. $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"' > +#. $'$" <DefineConstants>_FREEBSD</DefineConstants>"' > +#. $'$"</PropertyGroup>"' > > +#. $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"' > +#. $'$" <DefineConstants>_LINUX</DefineConstants>"' > +#. $'$"</PropertyGroup>"' > > +#. $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"' > +#. $'$" <DefineConstants>_OSX</DefineConstants>"' > +#. $'$"</PropertyGroup>"' > > +#. $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"' > +#. $'$" <DefineConstants>_WINDOWS</DefineConstants>"' > +#. $'$"</PropertyGroup>"' > > +#. $'$"<ItemGroup>"' > +#. $'$" {!modules_code}"' > +#. $'$" <Compile Include=\\\"{!fs_path}\\\" />"' > +#. $'$"</ItemGroup>"' > > +#. $'$"<ItemGroup>"' > +#. $'$" {!packages_code}"' > +#. $'$"</ItemGroup>"' > > +#. $'$"</Project>"' > > fsproj_code |> file_system.write_all_text_exists fsproj_path > > fsproj_path > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_project > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_project runtime' output_dir path = > inl full_path = path |> file_system.get_full_path > inl file_dir = full_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > inl extension = full_path |> file_system.get_extension > > trace Debug > fun () => "publish_project" > fun () => { full_path } > > match extension with > | "fsproj" => () > | _ => failwith $'$"app.publish_project / Invalid project file / extension: > {!extension}"' > > inl runtimes = > runtime' > |> optionm.map listm.singleton > |> optionm'.default_value [[ "linux-x64"; "win-x64" ]] > > inl output_dir = output_dir |> optionm'.default_value "dist" > > runtimes > |> listm.map fun runtime' => > runtime.execution_options fun x => { x with > command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"' > working_directory = file_dir |> Some |> optionm'.box > } > |> runtime.execute_with_options > |> fst > |> listm'.sum > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_code > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_code { workspace_root runtime packages modules output_dir name code > } = > inl package_dir = get_package_dir { workspace_root name target = None; hash > = None } > inl fsproj_path = persist_code_project { workspace_root package_dir packages > modules name code } > inl exit_code = fsproj_path |> publish_project runtime output_dir > if exit_code <>. 0 then > trace Critical > fun () => "publish_code" > fun () => { > code = code |> sm'.ellipsis_end 400 > fsproj_text = fsproj_path |> file_system.read_all_text > } > exit_code > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d encoding_rs encoding_rs_io regex > > publish_code { > workspace_root = file_system.get_workspace_root () > runtime = None > packages = [[]] > modules = [[]] > output_dir = None > name = "test1" > code = "1 + 1 |> ignore" > } > |> _assert_eq 0 > > ── [ 24.84s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\test1 } > │ 00:00:00 d #2 publish_project / { full_path = > \\?\C:\home\git\polyglot\target\spiral\test1\test1.fsproj } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test1", > │ ) } } > │ 00:00:00 v #4 > Determining projects to restore... > │ 00:00:01 v #5 > Restored > c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 231 ms). > │ 00:00:02 v #6 > > c:\home\git\polyglot\target\spiral\test1\test1.fs(1,16): warning FS0988: Main > module of program is empty: nothing will happen when it is run > [c:\home\git\polyglot\target\spiral\test1\test1.fsproj] > │ 00:00:03 v #7 > test1 -> > c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\win-x64\test1.dll > │ 00:00:03 v #8 > test1 -> > \\?\C:\home\git\polyglot\target\spiral\test1\dist\ > │ 00:00:03 v #9 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 462 } > │ 00:00:03 d #10 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "linux-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = Array(MutCell([])); on_line = None; stdin = > None; trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test1", > │ ) } } > │ 00:00:04 v #11 > Determining projects to restore... > │ 00:00:04 v #12 > Restored > c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 230 ms). > │ 00:00:06 v #13 > > c:\home\git\polyglot\target\spiral\test1\test1.fs(1,16): warning FS0988: Main > module of program is empty: nothing will happen when it is run > [c:\home\git\polyglot\target\spiral\test1\test1.fsproj] > │ 00:00:07 v #14 > test1 -> > c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\linux-x64\test1.dll > │ 00:00:07 v #15 > test1 -> > \\?\C:\home\git\polyglot\target\spiral\test1\dist\ > │ 00:00:07 v #16 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 464 } > │ __assert_eq / actual: 0 / expected: 0 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d encoding_rs encoding_rs_io regex > > publish_code { > workspace_root = file_system.get_workspace_root () > runtime = None > packages = [[]] > modules = [[]] > output_dir = None > name = "test2" > code = "1 + a |> ignore" > } > |> _assert_eq 2 > > ── [ 18.86s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\test2 } > │ 00:00:00 d #2 publish_project / { full_path = > \\?\C:\home\git\polyglot\target\spiral\test2\test2.fsproj } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test2", > │ ) } } > │ 00:00:00 v #4 > Determining projects to restore... > │ 00:00:01 v #5 > Restored > c:\home\git\polyglot\target\spiral\test2\test2.fsproj (in 227 ms). > │ 00:00:02 v #6 > > c:\home\git\polyglot\target\spiral\test2\test2.fs(1,5): error FS0039: The value > or constructor 'a' is not defined. > [c:\home\git\polyglot\target\spiral\test2\test2.fsproj] > │ 00:00:02 v #7 runtime.execute_with_options / result / { > exit_code = 1; std_trace_length = 285 } > │ 00:00:02 d #8 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "linux-x...0:00:05 v #12 > runtime.execute_with_options / result / { exit_code = 1; std_trace_length = 285 > } > │ 00:00:05 c #13 publish_code / { code = 1 + a |> ignore; > fsproj_text = <Project Sdk="Microsoft.NET.Sdk"> > │ <PropertyGroup> > │ <TargetFramework>net9.0</TargetFramework> > │ <LangVersion>preview</LangVersion> > │ <RollForward>Major</RollForward> > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ <PublishAot>false</PublishAot> > │ <PublishTrimmed>false</PublishTrimmed> > │ <PublishSingleFile>true</PublishSingleFile> > │ <SelfContained>true</SelfContained> > │ <Version>0.0.1-alpha.1</Version> > │ <OutputType>Exe</OutputType> > │ <ServerGarbageCollection>true</ServerGarbageCollection> > │ > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> > │ <DefineConstants>_FREEBSD</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Linux'))"> > │ <DefineConstants>_LINUX</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> > │ <DefineConstants>_OSX</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Windows'))"> > │ <DefineConstants>_WINDOWS</DefineConstants> > │ </PropertyGroup> > │ <ItemGroup> > │ > │ <Compile > Include="c:/home/git/polyglot/target/spiral/test2/test2.fs" /> > │ </ItemGroup> > │ <ItemGroup> > │ > │ </ItemGroup> > │ </Project> } > │ __assert_eq / actual: 2 / expected: 2 > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl read_file path = > inl code = > path > |> file_system.read_all_text > |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' > "$a[[<EntryPoint>]]\n$a$b" > inl code_trim = code |> sm'.trim_end [[]] > if code_trim |> sm'.ends_with "\\n()" > then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3) > else code > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persist_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl persist_file { workspace_root package_dir packages modules path } = > inl full_path = path |> file_system.get_full_path > inl name = full_path |> file_system.get_file_name_without_extension > inl code = full_path |> read_file > persist_code_project { workspace_root package_dir packages modules name code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_file { workspace_root runtime packages modules path } = > inl full_path = path |> file_system.get_full_path > inl dir = full_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > publish_code { > workspace_root > runtime > packages > modules > output_dir = dir </> "dist" |> Some > name = full_path |> file_system.get_file_name_without_extension > code = full_path |> read_file > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rust > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_workspace_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_workspace_cargo_toml_content { workspace_root } : string = > inl workspace_root = workspace_root |> file_system.normalize_path > $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"' > +#. $'$""' > +#. $'$"[[workspace]]"' > +#. $'$"resolver = \\\"2\\\""' > +#. $'$"members = [[\\\"packages/Rust/*\\\"]]"' > +#. $'$""' > +#. $'$"[[workspace.dependencies.fable_library_rust]]"' > +#. $'$"path = > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""' > +#. $'$"default-features = false"' > +#. $'$"features = [[]]"' > +#. $'$""' > +#. $'$"[[workspace.dependencies]]"' > +#. $'$"inline_colorization = \\\"~0.1\\\""' > +#. $'$""' > +#. $'$"[[profile.release]]"' > +#. $'$"codegen-units = 1"' > +#. $'$"opt-level = \\\"z\\\""' > +#. $'$"lto = true"' > +#. $'$"debug = false"' > +#. $'$"panic = \\\"abort\\\""' > +#. $'$"overflow-checks = true"' > +#. $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_cargo_toml_content { hash_hex runtime deps static_do_bindings } : string > = > $'$"[[package]]"' > +#. $'$"name = \\\"spiral_{!hash_hex}\\\""' > +#. $'$"version = \\\"0.0.1\\\""' > +#. $'$"edition = \\\"2021\\\""' > +#. $'$""' > +#. $'$"[[dependencies]]"' > +#. ( > if runtime <>. None > then $'$"fable_library_rust = {{ workspace = true }}"' > else > $'$"fable_library_rust = {{"' > +. $'$" workspace = true,"' > +. $'$" features = [["' > +. ( > if static_do_bindings > then $'$"\\\"static_do_bindings\\\", \\\"datetime\\\", > \\\"guid\\\", \\\"threaded\\\""' > else $'$"\\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\""' > ) > +. $'$"]]"' > +. $'$"}}"' > ) > +#. $'$"inline_colorization = {{ workspace = true }}"' > +#. $'$"{!deps}"' > +#. $'$""' > +#. ( > if runtime = None then > $'$"[[[[bin]]]]"' > +#. $'$"name = \\\"spiral_{!hash_hex}\\\""' > else > $'$"[[lib]]"' > +#. $'$"crate-type = [[\\\"cdylib\\\"]]"' > ) > +#. $'$"path = \\\"spiral.rs\\\""' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_empty_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_empty_cargo_toml_content () = > inl guid = date_time.now () |> date_time.new_guid_from_date_time |> > sm'.obj_to_string > $'$"[[package]]"' > +#. $'$"name = \\\"spiral_{!guid}\\\""' > +#. $'$"version = \\\"0.0.1\\\""' > +#. $'$"edition = \\\"2021\\\""' > +#. $'$""' > +#. $'$"[[[[bin]]]]"' > +#. $'$"name = \\\"spiral_{!guid}\\\""' > +#. $'$"path = \\\"spiral.rs\\\""' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_rust > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_rust { fs_path deps trace_level runtime cleanup } = > open runtime > > inl extension = "rs" > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir { workspace_root name = workspace_name; target = Some > Rust; hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl workspace_dir = package_dir </> "../../.." > inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml" > > if workspace_cargo_toml_path |> file_system.file_exists |> not > then get_empty_cargo_toml_content () |> file_system.write_all_text > workspace_cargo_toml_path > > inl cargo_toml_path = package_dir </> "Cargo.toml" > > if cargo_toml_path |> file_system.file_exists |> not > then get_empty_cargo_toml_content () |> file_system.write_all_text > cargo_toml_path > > inl lib_link_target_path = workspace_root </> > "lib/rust/fable/fable_modules/fable-library-rust" > inl lib_link_path = package_dir </> "fable_modules/fable-library-rust" > > lib_link_path |> file_system.link_directory lib_link_target_path > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime } > > inl result' = { > extension = Some extension > code = None > code_path = None > output = None > } > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / dotnet fable error" > fun () => { exit_code dotnet_fable_result } > { result' with > output = Some dotnet_fable_result > } > else > inl deps = > inl deps = > if runtime = None > then deps > else > // TODO: simplify > inl has_near_sdk = > deps > |> am'.vec_filter (sm'.from_std_string >> sm'.contains > "near-sdk") > |> am'.vec_len > |> i32 > |> fun n => n > 0 > // TODO: simplify with ++ > if has_near_sdk > then deps > else deps |> am'.vec_extend (;[[ "near-sdk" |> > sm'.to_std_string ]] |> am'.to_vec) > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' > |> fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > inl new_code = new_code_path |> file_system.read_all_text > > inl on_startup_text = "on_startup!" +. (join "(") > inl method0_fn_text = " method0" +. (join "(") > inl static_do_bindings = > (new_code |> sm'.contains on_startup_text) > && (new_code |> sm'.contains method0_fn_text |> not) > inl cargo_toml_content = > get_cargo_toml_content { hash_hex runtime deps static_do_bindings } > inl workspace_cargo_toml_content = get_workspace_cargo_toml_content { > workspace_root } > > cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path > workspace_cargo_toml_content |> file_system.write_all_text_exists > workspace_cargo_toml_path > > inl range_rs_path = lib_link_path </> "src/Range.rs" > if range_rs_path |> file_system.file_exists then > inl text = range_rs_path |> file_system.read_all_text > text > |> sm'.replace "use crate::String_::fromCharCode;" "use > crate::String_::fromChar;" > |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()" > |> file_system.write_all_text_exists range_rs_path > > inl exit_code, cargo_fmt_result = > fun () => > inl exit_code, result = > execution_options fun x => { x with > command = $'$"cargo fmt --manifest-path > \\\"{!cargo_toml_path}\\\" --"' > working_directory = workspace_root_external |> > resultm.box |> resultm.ok' > } > |> execute_with_options > > inl return () = > if exit_code = 0 > then Ok (exit_code, result) > else Error (exit_code, result) > > if result |> sm'.contains "failed to load manifest for workspace > member" |> not > then return () > else > inl missing_toml_path = > "failed to read `(?<a>.*?Cargo.toml)`" > |> sm'.new_regex > |> resultm.unwrap' > |> sm'.regex_captures result > |> am'.from_vec > |> fun x => x : _ i32 _ > |> am'.try_item 0 > |> optionm.map (mapm.get "a" >> optionm'.unbox) > |> optionm'.flatten > > match missing_toml_path with > | None => Error (exit_code, result) > | Some missing_toml_path => > if missing_toml_path |> file_system.file_exists |> not > then > missing_toml_path > |> file_system.directory_get_parent > |> optionm'.default_value' "" > |> file_system.create_dir > |> ignore > > get_empty_cargo_toml_content () > |> file_system.write_all_text missing_toml_path > return () > |> retry_fn' 3u8 > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / cargo fmt error" > fun () => { exit_code cargo_fmt_result } > > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "pub fn main() -> Result<(), String> " +. (join "{") > > inl main_code : string = > if runtime = None > then "" > else > $'$"#[[near_sdk::near_bindgen]]"' > +#. $'$"#[[derive(near_sdk::PanicOnDefault)]]"' > +#. $'$"pub struct MainState {{"' > +#. $'$"}}"' > +#. $'$""' > +#. $'$"#[[near_sdk::near_bindgen]]"' > +#. $'$"impl MainState {{"' > +#. $'$" pub fn state_main() {{"' > +#. $'$" Spiral::method0();"' > +#. $'$" }}"' > +#. $'$"}}"' > +#. ( > if runtime = None && (new_code |> sm'.contains (on_startup_text > +. "Spiral::method0()")) > then $'$"{!main_code_header} Ok(Spiral::method0()) }}"' > else $'$"{!main_code_header} Ok(()) }}"' > ) > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code' = $'$"{!new_code}\\n\\n{!main_code}\\n"' > inl new_code = > if cached > then new_code > else > inl runtime_contract = > match runtime with > | Some (Contract _) => true > | _ => false > > new_code' > |> sm'.replace > ("),)" +. !\($'"\\\";\\\".into()"')) > "));" > |> sm'.replace > ("},)" +. !\($'"\\\";\\\".into()"')) > "});" > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > |> sm'.replace_regex > "\\s\\sgetZero\\(\\);" > " getZero::<()>();" > |> sm'.replace > ("(&e.get_Curren" +. !\($'"\\\"t\\\".into()"')) > "(e.get_Current" > |> sm'.replace > ("getNull" +. !\($'"\\\"::<()>()\\\".into()"')) > "fable_library_rust::Native_::getZero()" > |> sm'.replace_regex > "\\s\\sfable_library_rust::Native_::getZero\\(\\);" > " fable_library_rust::Native_::getZero::<()>();" > |> sm'.replace > "::Slice'_" > "::Slice__" > |> sm'.replace > " Slice'_" > " Slice__" > |> sm'.replace > ("defaultOf()" +. !\($'"\\\",\\\".into()"')) > "defaultOf::<std::sync::Arc<dyn IDisposable>>()," > |> sm'.replace > ("__self" +. !\($'"\\\"__.\\\".into()"')) > "self." > |> sm'.replace > ("_self" +. !\($'"\\\"_.\\\".into()"')) > "self." > |> sm'.replace > ("get_or_insert_wit" +. !\($'"\\\"h\\\".into()"')) > "get_or_init" > |> sm'.replace > ("use > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" +. > !\($'"\\\";\\\".into()"')) > "type ConcurrentStack_1<T> = T;" > |> sm'.replace > ("use fable_library_rust::System::TimeZoneInfo" +. > !\($'"\\\";\\\".into()"')) > "type TimeZoneInfo = i64;" > |> sm'.replace > ("use > fable_library_rust::System::Threading::Tasks::TaskCanceledException" +. > !\($'"\\\";\\\".into()"')) > "type TaskCanceledException = ();" > |> if static_do_bindings > then id > else sm'.replace > on_startup_text > ("// " +. on_startup_text) > |> if runtime_contract |> not > then id > else sm'.replace > ("use fable_library_rust::DateTime_::DateTime" +. > ";") > "type DateTime = ();" > > if not cached then > new_code > |> file_system.write_all_text_exists new_code_path > > inl command = > if runtime <> None > then $'$"cargo +nightly-2024-07-14 build --release --target > wasm32-unknown-unknown --manifest-path \\\"{!cargo_toml_path}\\\""' > else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""' > inl environment_variables = > if runtime <> None > then ;[[]] > else > inl fast = false > ;[[ > "TRACE_LEVEL", "Verbose" > "RUSTC_WRAPPER", "sccache" > "RUST_BACKTRACE", "full" > "RUSTFLAGS", > if fast > then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C > debuginfo=0" > else "-C prefer-dynamic" > ]] > inl exit_code, cargo_result = > execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> execute_with_options > > inl result = > if runtime = None then > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : > string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > inl command = > a ;[[ > vars > command > ]] > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!command}\'"' : string > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / error" > fun () => { exit_code new_code_path external_command > cleanup cargo_result } > result' > else > inl output = > try > fun () => > cargo_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> am'.skip_while fun line => > (line |> sm'.contains "profile [[optimized]] > target" |> not) > && (line |> sm'.contains "profile > [[unoptimized]] target" |> not) > && (line |> sm'.contains "profile > [[unoptimized + debuginfo]] target" |> not) > |> am'.skip 2 > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_rust / Exception" > fun () => { ex new_code_path > external_command cargo_result } > None > |> optionm'.box > |> optionm'.unwrap > { result' with > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > inl wasm_path : string = > > $'$"target/spiral/{!workspace_name}/target/wasm32-unknown-unknown/release/spiral > _{!hash_hex}.wasm"' > > inl command = > inl invoke_block_path = "scripts/invoke-block.ps1" > inl spiral_wasm_command : string = > inl runtime_cmd = > match runtime with > | Some (Wasm cmd) => cmd > | Some (Contract cmd) => cmd > | _ => "" > $'$"\'deps/spiral/workspace/target/release/spiral_wasm > -w {!wasm_path} -t Debug {!runtime_cmd}\'"' > inl automation = "AUTOMATION" |> > env.get_environment_variable > $'$"pwsh -c \\\"pwsh {!invoke_block_path} > {!spiral_wasm_command} -Linux -EnvironmentVariables > AUTOMATION={!automation}\`nNEAR_RPC_TIMEOUT_SECS=100\\\""' > > if exit_code = 0 then > inl exit_code, spiral_wasm_result = > execution_options fun x => { x with > command > working_directory = workspace_root |> optionm'.some' > } > |> execute_with_options > > if exit_code = 0 then > { result' with > code = Some new_code > code_path = Some new_code_path > output = Some spiral_wasm_result > } > else > trace Critical > fun () => "spiral.process_rust / wasm error" > fun () => { > exit_code new_code_path cargo_result cleanup > spiral_wasm_result = > $'$"\\n{!spiral_wasm_result}"' : string > } > result' > else > trace Critical > fun () => "spiral.process_rust / cargo error" > fun () => { > exit_code new_code_path wasm_path command cleanup > cargo_result = $'$"\\n{!cargo_result}"' : string > } > result' > > if cleanup then > inl cleanup = > inl build_target = > if runtime <> None > then "wasm32-unknown-unknown/release" > else "debug" > > [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]] > |> listm.map fun ext => > workspace_dir </> > $'$"target/{!build_target}/spiral_{!hash_hex}{!ext}"' > |> listm.map fun path => path, path |> file_system.file_exists > > trace Verbose > fun () => "spiral.process_rust / cleanup" > fun () => { new_code_path cleanup } > > cleanup > |> listm'.filter snd > |> listm.iter (fst >> file_system.file_delete) > > result > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## dib > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_dib > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_dib { path retries working_directory } = > inl exit_code, repl_result = > let rec loop retry = > inl exit_code, repl_result = > runtime.execution_options fun x => { x with > command = $'$"dotnet repl --exit-after-run --run > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""' > environment_variables = ;[[ > "TRACE_LEVEL", "Verbose" > "AUTOMATION", "True" > ]] > trace = false > working_directory = working_directory |> optionm'.box > } > |> runtime.execute_with_options > > if exit_code = 0 || retry >= retries > then exit_code, repl_result > else > trace Debug > fun () => "spiral.run / repl error" > fun () => { exit_code repl_result retry = > $'$"{!retry}/{!retries}"' : string } > loop (retry + 1) > loop 1 > > inl exit_code, result = > if exit_code <>. 0 > then exit_code, repl_result > else > inl exit_code, jupyter_result = > runtime.execution_options fun x => { x with > command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to > html --HTMLExporter.theme=dark"' > } > |> runtime.execute_with_options > > trace Debug > fun () => "spiral.run / dib / jupyter nbconvert" > fun () => { exit_code jupyter_result_length = jupyter_result |> > sm'.length : i32 } > > if exit_code <>. 0 > then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: > {!jupyter_result}"' > else > inl exit_code, pwsh_replace_html_result = > inl path = path |> sm'.replace "'" "''" > runtime.execution_options fun x => { x with > command = $'$"pwsh -c \\\"$counter = 1; $path = > \'{!path}.html\'; (Get-Content $path -Raw) -replace > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++ > }} | Set-Content $path\\\""' > } > |> runtime.execute_with_options > > trace Debug > fun () => "spiral.run / dib / html cell ids" > fun () => { exit_code pwsh_replace_html_result_length = > pwsh_replace_html_result |> sm'.length : i32 } > > $'$"{!path}.html"' > |> file_system.read_all_text > |> sm'.replace "\r\n" "\n" > |> file_system.write_all_text $'$"{!path}.html"' > > $'$"{!path}.ipynb"' > |> file_system.read_all_text > |> sm'.replace "\r\n" "\n" > |> sm'.replace "\\r\\n" "\\n" > |> file_system.write_all_text $'$"{!path}.ipynb"' > > exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"' > > trace Debug > fun () => "spiral.run / dib" > fun () => { exit_code result_length = result |> sm'.length : i32 } > > if exit_code <>. 0 > then failwith $'$"spiral.run / dib / exit_code: {!exit_code} / result: > {!result}"' > ;[[ > "stdio", > result > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## typescript > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_typescript > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_typescript { fs_path deps trace_level } = > inl extension = "ts" > > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir > { workspace_root name = workspace_name; target = Some TypeScript; > hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules" > inl lib_dir_prefix = $'$"fable-library-{!extension}"' > inl lib_dir_prefix' = join lib_dir_prefix > > inl versions : _ (string * string) = > lib_path > |> file_system.new_walk_dir > |> file_system.walk_dir_filter fun entry => async.new_future_move_send > fun () => > entry > |> file_system.dir_entry_file_type > |> async.await_send > |> resultm.map_error' sm'.format' > |> resultm.unbox > |> function > | Ok file_type when file_type |> file_system.file_type_is_dir |> > not => file_system.Ignore > | _ => > inl path = > entry > |> file_system.dir_entry_path > |> file_system.path_buf_display > |> sm'.format' > |> sm'.from_std_string > if path |> file_system.get_directory_name |> sm'.starts_with > lib_dir_prefix |> not > then file_system.IgnoreDir > else > match path |> file_system.directory_get_parent |> > optionm'.unbox with > | Some parent when parent |> sm'.contains lib_dir_prefix > |> not => > file_system.Continue > | _ => file_system.IgnoreDir > |> async.stream_filter_map_futures fun (entry : _ _ > file_system.async_walkdir_error) => > inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox > match entry with > | Ok entry => > inl path = > entry > |> file_system.dir_entry_path > |> file_system.path_buf_display > |> sm'.format' > |> sm'.from_std_string > inl version = > $'$"{!lib_dir_prefix'}\\.(?<a>[[-\\d\\w.]]+)$"' > |> sm'.new_regex > |> resultm.unwrap' > |> sm'.regex_captures path > |> am'.from_vec > |> fun x => x : _ int _ > |> am'.try_item 0 > |> optionm.map (mapm.get "a" >> optionm'.unbox) > |> optionm'.flatten > version > |> optionm.map fun version => > path, version > | Error error => > trace Critical > fun () => "spiral.process_typescript / stream_filter_map" > fun () => { error } > None > |> optionm'.box > |> async.stream_collect_futures > |> async.await > |> async.into_par_iter > |> async.par_map id > |> async.par_collect > > inl version = > versions > |> am'.from_vec > |> fun x => x : _ i32 _ > |> am'.try_item 0 > > trace Debug > fun () => "spiral.process_typescript" > fun () => { version } > > > let link_lib () = > match version with > | Some (_path, version) => > inl lib_link_target_path = lib_path </> > $'$"fable-library-{!extension}.{!version}"' > inl lib_link_path = package_dir </> > $'$"fable_modules/fable-library-{!extension}.{!version}"' > lib_link_path |> file_system.link_directory lib_link_target_path > | None => failwith $'$"spiral.process_typescript / fable library not > found / lib_path: {!lib_path}"' > > link_lib () > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime = None } > > link_lib () > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_typescript" > fun () => { exit_code dotnet_fable_result } > { extension = Some extension; code = None; code_path = None; output = > Some dotnet_fable_result } > else > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > else $'$"\\"{!dep}\\":\\"*\\""' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat ",\n" > > inl package_json_content = > $'$"{{"' > +. $'$" \\\"name\\\": \\\"spiral_{!hash_hex}\\\","' > +. $'$" \\\"dependencies\\\": {{"' > +. deps > +. $'$" }},"' > +. $'$" \\\"devDependencies\\\": {{"' > +. $'$" }},"' > +. $'$"}}"' > > inl workspace_package_json_content = > "" > > inl package_json_path = package_dir </> "package.json" > > inl workspace_dir = package_dir </> "../.." > inl workspace_package_json_path = workspace_dir </> "package.json" > > package_json_content |> file_system.write_all_text_exists > package_json_path > > workspace_package_json_content |> file_system.write_all_text_exists > workspace_package_json_path > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > trace Debug > fun () => "spiral.process_typescript" > fun () => { new_code_path } > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "// spiral.process_typescript" > inl main_code = "// spiral.process_typescript" > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code = > if cached > then new_code > else > new_code > |> sm'.replace > $'$"\\\"./fable_modules/fable-library-ts.{!version}/"' > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{! > version}/"' > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > > if not cached then > $'$"{!new_code}\\n\\n{!main_code}\\n"' > |> file_system.write_all_text_exists new_code_path > > inl command = $'$"bun run \\\"{!new_code_path}\\\""' > inl environment_variables = > match "~/.bun/bin" |> env.append_path with > | Some path => [[ "PATH", path ]] > | None => [[]] > ++ [[ > "TRACE_LEVEL", "Verbose" > ]] > |> listm'.box > |> listm'.to_array' > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_typescript / Exception" > fun () => { ex new_code_path external_command > run_result } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_typescript / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## python > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_python > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_python { fs_path deps trace_level } = > inl extension = "py" > inl is_trace = trace_level = Verbose > inl _trace (fn : () -> string) = > if is_trace > then trace Info (fun () => $'$"spiral.process_python / {!fn ()}"') id > else fn () |> console.write_line > > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir { workspace_root name = workspace_name; target = Some > Python; hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl lib_path = workspace_root </> "lib/python/fable/fable_modules" > > inl lib_link_target_path = lib_path </> $'$"fable_library"' > inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"' > > lib_link_path |> file_system.link_directory lib_link_target_path > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime = None } > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_python" > fun () => { exit_code dotnet_fable_result } > { extension = Some extension; code = None; code_path = None; output = > Some dotnet_fable_result } > else > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > else $'$"\\"{!dep}\\":\\"*\\""' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat ",\n" > > inl package_json_content = > $'$"{{"' > +. $'$" \\\"name\\\": \\\"spiral_{!hash_hex}\\\","' > +. $'$" \\\"dependencies\\\": {{"' > +. deps > +. $'$" }},"' > +. $'$" \\\"devDependencies\\\": {{"' > +. $'$" }},"' > +. $'$"}}"' > > inl workspace_package_json_content = > "" > > inl package_json_path = package_dir </> "package.json" > > inl workspace_dir = package_dir </> "../.." > inl workspace_package_json_path = workspace_dir </> "package.json" > > package_json_content |> file_system.write_all_text_exists > package_json_path > > workspace_package_json_content |> file_system.write_all_text_exists > workspace_package_json_path > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > trace Debug > fun () => "spiral.process_python" > fun () => { new_code_path } > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "# spiral.process_python" > inl main_code = "# spiral.process_python" > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code = > if cached > then new_code > else > new_code > |> sm'.replace > ("),)" +. !\($'"\\\";\\\".into()"')) > "));" > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > > if not cached > then > $'$"{!new_code}\\n\\n{!main_code}\\n"' > |> file_system.write_all_text_exists new_code_path > > inl command = $'$"python \\\"{!new_code_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_python / Exception" > fun () => { ex new_code_path external_command > run_result } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_python / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## gleam > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_gleam > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_gleam { gleam_path deps } = > inl extension = "gleam" > > inl new_code_path = gleam_path > inl new_code = new_code_path |> file_system.read_all_text > > inl hash_hex = { extension new_code } |> sm'.format |> crypto.hash_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = new_code_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > > inl package_dir = package_dir </> ".." > > inl manifest_path = package_dir </> "gleam.toml" > > inl deps = > ;[[ > "gleam_stdlib=\">=0.55.0 and <1.0.0\"" > "gary=\">=1.1.0 and <2.0.0\"" > ]] > |> am'.to_vec > |> am'.vec_map sm'.to_std_string > |> am'.vec_extend deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> > fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl exit_code, run_result = > inl manifest = > $'$"name = \\\"main\\\""' > +#. $'$"target = \\\"erlang\\\""' > +#. $'$""' > +#. $'$"[[dependencies]]"' > +#. $'$"{!deps}"' > > manifest |> file_system.write_all_text_exists manifest_path > > runtime.execution_options fun x => { x with > command = $'$"gleam check"' > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_gleam / format error" > fun () => { exit_code run_result new_code_path } > { extension = Some extension; code = None; code_path = None; output = > None } > else > inl command = $'$"gleam run --no-print-progress > \\\"{!new_code_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "" > "GLEAM_LOG", "" > "GLEAM_LOG_NOCOLOUR", "" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_gleam / Exception" > fun () => { ex run_result new_code_path > external_command } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_gleam / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_cuda > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_cuda { py_path env deps } = > inl extension = "py" > > inl new_code_path = py_path > inl new_code = new_code_path |> file_system.read_all_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = new_code_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > > inl manifest_path = > match env with > | Pip => package_dir </> "requirements.txt" > | Poetry => package_dir </> "pyproject.toml" > > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> > fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl exit_code, run_result = > if deps = "" > then 0, "" > else > inl manifest = > match env with > | Pip => > deps > | Poetry => > $'$"[[tool.poetry]]"' > +#. $'$"name = \\\"test\\\""' > +#. $'$"version = \\\"0.0.1\\\""' > +#. $'$"description = \\\"\\\""' > +#. $'$"authors = [[]]"' > +#. $'$""' > +#. $'$"[[tool.poetry.dependencies]]"' > +#. $'$"python=\\\"~3.12\\\""' > +#. $'$"{!deps}"' > +#. $'$""' > +#. $'$"[[build-system]]"' > +#. $'$"requires = [[\\\"poetry-core\\\"]]"' > +#. $'$"build-backend = \\\"poetry.core.masonry.api\\\""' > > manifest |> file_system.write_all_text_exists manifest_path > > runtime.execution_options fun x => { x with > command = > match env with > | Pip => $'$"pip install -r requirements.txt"' > | Poetry => $'$"poetry install"' > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_cuda / env install error" > fun () => { env exit_code run_result new_code_path } > { extension = Some extension; code = None; code_path = None; output = > None } > else > inl command = > match env with > | Pip => $'$"python \\\"{!new_code_path}\\\""' > | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 > || (run_result |> sm'.contains > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver") > then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_cuda / Exception" > fun () => { ex run_result new_code_path > external_command } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_cuda / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## fsharp > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_fsharp > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_fsharp { spi_path } = > inl extension = "fsx" > > inl new_code_path = spi_path > inl new_code = new_code_path |> file_system.read_all_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl supervisor_path = workspace_root </> > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())" > inl code_dir = new_code_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > inl file_name = new_code_path |> file_system.get_file_name_without_extension > inl output_path = code_dir </> $'$"{!file_name}.{!extension}"' > inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\" > \\\"{!output_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_fsharp / Exception" > fun () => { ex run_result new_code_path external_command > } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_fsharp / error" > fun () => { exit_code run_result new_code_path external_command } > { extension = Some extension; code = None; code_path = None; output = > None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## run > > ── spiral ────────────────────────────────────────────────────────────────────── > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin > (resultm.result' string string) = > fun () => > match matches |> runtime.matches_subcommand |> optionm'.unbox with > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .gleam > |> fst) => > > inl gleam_path = > arg_matches > |> runtime.matches_get_one ((get_args () .gleam |> > snd).gleam_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> > fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl command_result = > process_gleam { gleam_path deps } > |> fun { extension code output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > > ;[[ > "command_result", > command_result > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.unwrap' > |> sm'.from_std_string > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .cuda |> > fst) => > > inl py_path = > arg_matches > |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path > |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl env = > arg_matches > |> runtime.matches_get_one ((get_args () .cuda |> snd).env |> > fst) > |> optionm'.unbox > |> optionm.map ( > sm'.from_std_string > >> reflection.union_try_pick > ) > |> optionm'.flatten > |> optionm'.default_value Pip > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> > fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl command_result = > process_cuda { py_path env deps } > |> fun { extension code output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > > ;[[ > "command_result", > command_result > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.unwrap' > |> sm'.from_std_string > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .fable > |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path > |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl command = > arg_matches > |> runtime.matches_get_one ((get_args () .fable |> snd).command > |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl command_result = > match command with > | Some command => > get_command () > |> runtime.command_get_matches_from ( > $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |> > runtime.split_args |> resultm.get > ) > |> run trace_level > |> async.await > |> resultm.unwrap' > | None => "{}" > > ;[[ > "command_result", > command_result > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst) > => > > inl path = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> snd).path |> > fst) > |> optionm'.map'' ( > sm'.from_std_string > >> file_system.absolute_path > ) > |> optionm'.unwrap > > inl retries = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> snd).retries |> > fst) > |> optionm'.default_value' 1u8 > > inl working_directory = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> > snd).working_directory |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > process_dib { path retries working_directory } > > | matches => > match matches with > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .rust |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .rust |> snd).deps > |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl cleanup = > arg_matches > |> runtime.matches_get_flag ((get_args () .rust |> > snd).cleanup |> fst) > > inl wasm = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> snd).wasm > |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl contract = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> > snd).contract |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl runtime = > match wasm, contract with > | Some wasm, _ => Wasm wasm |> Some > | _, Some contract => Contract contract |> Some > | _ => None > > process_rust { fs_path deps trace_level runtime cleanup } > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .typescript |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .typescript |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .typescript |> > snd).deps |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > process_typescript { fs_path deps trace_level } > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .python |> fst) => > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .python |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .python |> > snd).deps |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > process_python { fs_path deps trace_level } > > | Some (subcommand, arg_matches) => > trace Debug > fun () => "spiral.run / invalid subcommand" > fun () => { subcommand arg_matches } > > { extension = None; code = None; code_path = None; output = None > } > | _ => > { extension = None; code = None; code_path = None; output = None > } > |> fun { extension code code_path output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "code_path", code_path |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.map_error' (sm'.format' >> sm'.from_std_string) > |> resultm.map' sm'.from_std_string > |> async.new_future_move > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "let method0 () =\n 3 - 6 |> System.Console.WriteLine\nmethod0 > ()\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "rs" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 26.75s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_24e32e6ca64b91a4c053 > 866059398b325b7e2ec6492fae7a9ee995208b0a4407\84b99b0b-d6d4-d4b8-7f79-3c480ce421d > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21fe14ae67 > b2d0376f38735180a84a07a21c7e60647e2ef8fb } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/b42df620ea8bfa21fe14ae6 > 7b2d0376f38735180a84a07a21c7e60647e2ef8fb/spiral.fsproj", "--optimize", > "--lang", "rs", "--extension", ".rs", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Rust\\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/b42df620ea8bfa21fe14ae6 > 7b2d0376f38735180a84a07a21c7e60647e2ef8fb/spiral.fsproj" --optimize --lang rs > --extension .rs --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21fe14ae6 > 7b2d0376f38735180a84a07a21c7e60647e2ef8fb" --define _WINDOWS; cancellation_token > = None; environment_variables = Array(MutCell([])); on_line = None; stdin = > None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Rust > compiler (status: alpha) > │ 00:00:00 v #5 ...length = 444 } > │ 00:00:02 v #23 spiral.process_rust / cleanup / { > new_code_path = > c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21fe14ae67 > b2d0376f38735180a84a07a21c7e60647e2ef8fb\spiral.rs; cleanup = > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb\../../..\target/debug/spiral_b42 > df620ea8bfa21fe14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb.d", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb\../../..\target/debug/spiral_b42 > df620ea8bfa21fe14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb.exe", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb\../../..\target/debug/spiral_b42 > df620ea8bfa21fe14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb.pdb", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb\../../..\target/debug/spiral_b42 > df620ea8bfa21fe14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb.wasm", false, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\b42df620ea8bfa21f > e14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb\../../..\target/debug/spiral_b42 > df620ea8bfa21fe14ae67b2d0376f38735180a84a07a21c7e60647e2ef8fb", false, > UH5_0))))) } > │ __assert_eq / actual: "rs" / expected: "rs" > │ __assert_eq / actual: "-3" / expected: "-3" > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "3 - 6 |> System.Console.WriteLine\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"typescript\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "ts" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 24.91s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_3d82eb40785301bce7fc > 7330efe04bba4a9d3e222c5288d3f9c4a5ef5bc439ee\c6422374-71e4-07d4-0ba4-c3084b24fbb > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db0 > d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8 } > │ 00:00:00 d #3 spiral.process_typescript / { version = > US48_0("c:/home/git\polyglot\lib/typescript/fable/fable_modules\fable-library-ts > .5.0.0-alpha.9", "5.0.0-alpha.9") } > │ 00:00:00 d #4 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj", "--optimize", > "--lang", "ts", "--extension", ".ts", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\TypeScript\\702335b0756 > baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj" --optimize --lang > ts --extension .ts --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8" --define _WINDOWS; > cancellation_token = None; environment_variables = Array(MutCell([])); > o...rrent\.cargo\bin;C:\Users\i574n\scoop\apps\latex\current\texmfs\install\mikt > ex\bin\x64;C:\Users\i574n\scoop\apps\dotnet-sdk-preview\current;C:\Users\i574n\s > coop\apps\dotnet-sdk\current;C:\Users\i574n\scoop\apps\gsudo\current;C:\Users\i5 > 74n\scoop\apps\python\current;C:\Users\i574n\scoop\apps\nircmd\current;C:\Users\ > i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n/scoop/buckets/mold/home > /windows/path;C:\Users\i574n/scoop/persist/rustup/.cargo/bin;C:\Users\i574n/scoo > p/apps/nvm/current/nodejs/nodejs;C:\Users\i574n/scoop/apps/cygwin/current/root/b > in;C:\Users\i574n\AppData\Local\Programs\Microsoft VS > Code\bin;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n\.bun\ > bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n\scoop\shims;C:\Users\i574n\.fly\ > bin;C:\Program > Files\Wasmtime\bin;C:\Users\i574n\.dotnet\tools;test;C:\Users\i574n\go\bin;C:\Us > ers\i574n\.dotnet\tools;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Use > rs\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i > 574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/. > cargo/bin;C:\Users\i574n/.bun/bin"), ("TRACE_LEVEL", "Verbose")])); on_line = > None; stdin = None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #19 > -3 > │ 00:00:00 v #20 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 2 } > │ __assert_eq / actual: "ts" / expected: "ts" > │ __assert_eq / actual: "-3" / expected: "-3" > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "3 - 6 |> System.Console.WriteLine\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"python\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "py" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 24.56s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_063f1457aa09c01bb372 > e389abfb1761e24db36f4cd1acc2a7e1aec7c0156892\c6422374-71e4-07d4-0ba4-c3084b24fbb > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09 > b3f3057a6844a0b70d75477350491883d14d8680ce } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj", "--optimize", > "--lang", "py", "--extension", ".py", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb0 > bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj" --optimize --lang py > --extension .py --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce" --define _WINDOWS; > cancellation_token = None; environment_variables = Array(MutCell([])); on_line = > None; stdin = None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Python > compiler (status: beta) > │ 00:00:00 14d8680ce\spiral.fsproj... > │ 00:00:00 v #10 > Retrieving project options from cache, > in case of issues run `dotnet fable clean` or try `--noCache` option. > │ 00:00:00 v #11 > Project and references (1 source > files) parsed in 137ms > │ 00:00:00 v #12 > > │ 00:00:00 v #13 > Skipped compilation because all > generated files are up-to-date! > │ 00:00:00 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 510 } > │ 00:00:00 d #15 spiral.process_python / { new_code_path > = > c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09 > b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py } > │ 00:00:00 d #16 runtime.execute_with_options / { > file_name = python; arguments = > ["c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb > 0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\\spiral.py"]; options = { > command = python > "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose")])); > on_line = None; stdin = None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #17 > -3 > │ 00:00:00 v #18 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 2 } > │ __assert_eq / actual: "py" / expected: "py" > │ __assert_eq / actual: "-3" / expected: "-3" > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "test.dib" > inl code = > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\ > n#!fsharp\n\n3 - 6\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl path = temp_dir </> file_name |> file_system.normalize_path > > code > |> file_system.write_all_text path > > get_command () > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |> > runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> __assert sm'.contains Silent "<pre>-3" > > $'$"{!path}.html"' > |> file_system.read_all_text > |> __assert sm'.contains Silent "\"cell-id=1\"" > > ── [ 30.64s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_f14c2e3914810e983cdd > 2a6cafdd265cf65046ddab45b813621c337c82a8b202\af524e22-8e9a-5d18-99ed-bd86e1b7462 > 3 } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib", "--output-path", > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib" --output-path > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.ipynb"; cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > 3 - 6 > │ > > │ > ── [ 3.42s - return value ] > ─────────────────────────────────...f524e22-8e9a-5d18-99ed-bd86e1b74623\test.dib > .html > │ 00:00:07 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 1110 } > │ 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 1110 } > │ 00:00:07 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.html'; (Get-Content $path -Raw) -replace > '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_f14c2e3914810e983cd > d2a6cafdd265cf65046ddab45b813621c337c82a8b202/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.html'; (Get-Content $path -Raw) -replace > '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:07 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:07 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:07 d #16 spiral.run / dib / { exit_code = 0; > result_length = 2636 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tests > > ── spiral ────────────────────────────────────────────────────────────────────── > inl tests () = > testing.run_tests { > verify_app = get_command >> runtime.command_debug_assert > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main (args : array_base string) = > inl trace_state = get_trace_state_or_init None > > trace Debug > fun () => "spiral.main" > fun () => { args } > > inl command = get_command () > inl arg_matches = command |> runtime.command_get_matches > > inl trace_state_level = trace_state.level > > inl result = > arg_matches > |> run *trace_state_level > |> async.block_on_futures > |> resultm.unwrap' > > if *trace_state_level = Info > then result |> console.write_line > > 0i32 > > inl main () = > $'let tests () = !tests ()' : () > $'let main args = !main args' : () 00:02:59 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 107228 } 00:02:59 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:00 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/spiral/spiral.dib.ipynb to html 00:03:00 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:00 v #7 ! validate(nb) 00:03:01 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:01 v #9 ! return _pygments_highlight( 00:03:03 v #10 ! [NbConvertApp] Writing 624877 bytes to c:\home\git\spiral\apps\spiral\spiral.dib.html 00:03:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:03:03 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:03:03 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:04 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:04 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:04 d #16 spiral.run / dib / { exit_code = 0; result_length = 108139 } 00:00:00 d #1 writeDibCode / output: Spi / path: spiral.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral / hash: / code.Length: 1541624 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @tomcl Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral\spiral.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 149ms Skipped compilation because all generated files are up-to-date! spiral/apps/spiral/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs spiral/apps/spiral/build.ps1 / $projectName: spiral / $env:CI:'' Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral) Finished `release` profile [optimized] target(s) in 14.41s Running unittests spiral.rs (C:\home\git\spiral\workspace\target\release\deps\spiral-8769982ca9bb71d8.exe) running 1 test test module_1216f6c3::Spiral::verify_app ... ok successes: successes: module_1216f6c3::Spiral::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral) error: failed to remove file `C:\home\git\spiral\workspace\target\release\spiral.exe` Caused by: Access is denied. (os error 5) # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: '' / $ScriptBlock: 'cargo build --release' polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\wasm / ResolvedLocation: C:\home\git\spiral\apps\wasm polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\wasm/spiral_wasm.dib", "--working-directory", "C:\home\git\polyglot"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib", "--output-path", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/wasm/spiral_wasm.dib" --output-path "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral_wasm > > ── spiral ────────────────────────────────────────────────────────────────────── > open rust.rust_operators > open rust > open sm'_operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## spiral_wasm > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_args > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_args () = > { > exception = "exception", 'e' > trace_level = "trace_level", 't' > wasm = "wasm", 'w' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_command > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_command () = > ##"command" > |> runtime.new_command > |> runtime.command_args_override_self true > |> runtime.command_init_arg (get_args () .exception) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg (get_args () .trace_level) ( > real runtime.arg_union `trace_level ignore > ) > |> runtime.command_init_arg (get_args () .wasm) ( > runtime.arg_required true > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### run > > ── spiral ────────────────────────────────────────────────────────────────────── > let rec run > (matches : runtime.arg_matches) > : async.future_pin ( > resultm.result' > u8 > resultm.anyhow_error > ) > = > fun () => > inl wasm_path = > matches > |> runtime.matches_get_one (get_args () .wasm |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path } > > inl wasm = wasm_path |> file_system.read |> resultm.try' > > let fn (retry : u8) = > fun () => > inl worker = near_workspaces.sandbox_worker () |> resultm.try' > inl contract = worker |> near_workspaces.dev_deploy wasm |> > async.await |> resultm.try' > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry > worker contract } > > inl result = > contract > |> near_workspaces.call "state_main" > |> near_workspaces.gas (near_workspaces.from_tgas 300) > |> near_workspaces.transact > |> async.await > |> resultm.try' > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry > result } > > result > |> near_workspaces.logs > |> am'.vec_map sm'.ref_to_std_string > |> am'.vec_for_each console.write_line > > trace_raw Info (fun () => " ") > result |> near_workspaces.print_usd retry > > inl result2 = result |> near_workspaces.into_result > > trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 > } > > inl receipt_failures = result |> > near_workspaces.receipt_failures > inl receipt_failures_len = receipt_failures |> am'.vec_len |> > i32 > > trace Verbose > fun () => "spiral_wasm.run" > fun () => { receipt_failures_len receipt_failures } > > inl receipt_outcomes = result |> > near_workspaces.receipt_outcomes > inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> > i32 > > trace Verbose > fun () => "spiral_wasm.run" > fun () => { receipt_outcomes_len receipt_outcomes } > > inl json = result |> near_workspaces.json > > trace Verbose (fun () => "spiral_wasm.run") fun () => { json } > > inl borsh = result |> near_workspaces.borsh > > trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh } > > inl error = { receipt_outcomes_len retry receipt_failures } |> > sm'.format > if receipt_failures_len > 0 > then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box > elif receipt_outcomes_len > 1 > then (Ok None : _ _ resultm.anyhow_error) |> resultm.box > else error |> resultm.anyhow_error |> resultm.err > |> async.new_future_move > > let rec loop (retry : u8) = > inl max = 15 > inl init (error : _ string) = > fun () => > { retry error } > |> async.new_future_move > fun () => > inl result = > fn retry > |> async.await > |> resultm.map_error' sm'.format' > |> resultm.unbox > match result with > | Ok (None) => > init None > |> async.await > |> Ok > | Ok (Some error) => > trace Critical (fun () => "spiral_wasm.run / Ok (Some > error)") fun () => { retry error } > init (Some error) > |> async.await > |> Error > | Error error when retry >= max => > trace Warning (fun () => "spiral_wasm.run / Error error") > fun () => { retry error } > trace_raw Warning (fun () => "\n") > init None > |> async.await > |> Ok > | Error error => > trace Warning (fun () => "spiral_wasm.run / Error error") > fun () => { retry error } > trace_raw Warning (fun () => "\n") > loop (retry + 1) |> async.await > |> async.new_future_move > inl retries = loop 1 |> async.await > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retries } > > match retries with > | Ok { retry } => Ok retry |> resultm.box > | Error { retry error } => { retries error } |> sm'.format |> > resultm.anyhow_error |> resultm.err > > |> async.new_future_move > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main (args : array_base string) = > inl command = get_command () > inl arg_matches = command |> runtime.command_get_matches > > inl trace_level = > arg_matches > |> runtime.matches_get_one (get_args () .trace_level |> fst) > |> optionm'.unbox > |> optionm.map ( > sm'.from_std_string > >> reflection.union_try_pick > ) > |> optionm'.flatten > |> optionm'.default_value Verbose > > inl trace_state = get_trace_state_or_init (Some trace_level) > > trace Verbose > fun () => "spiral_wasm.main" > fun () => { args } > > inl exception = > arg_matches > |> runtime.matches_get_one (get_args () .exception |> fst) > |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >> > sm'.trim_end [[ '\\' ]]) > |> optionm'.unbox > > inl result = > arg_matches > |> run > |> async.block_on_tokio > |> resultm.map_error' sm'.format' > > match result |> resultm.unbox, exception with > | Ok retries, Some exception => > ($'$"spiral_wasm.main / retries: {!retries} / exception: > \'{!exception}\'"' : string) > |> resultm.err |> resultm.unwrap' > | Error _error, Some ("") => > () > | Error error, Some exception when error |> sm'.from_std_string |> > sm'.contains exception => > () > | Error error, Some exception => > ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"' > : string) > |> resultm.err |> resultm.unwrap' > | Ok _retries, _ => > () > | Error _error, _ => > result |> resultm.unwrap' |> ignore > > 0i32 > > inl main () = > $'let main args = !main args' : () 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8454 } 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:10 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb to html 00:00:10 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:10 v #7 ! validate(nb) 00:00:11 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:11 v #9 ! return _pygments_highlight( 00:00:11 v #10 ! [NbConvertApp] Writing 306846 bytes to c:\home\git\spiral\apps\wasm\spiral_wasm.dib.html 00:00:11 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 } 00:00:11 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 } 00:00:11 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 9371 } 00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 233276 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_wasm polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @Titaye Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 151ms Skipped compilation because all generated files are up-to-date! spiral/apps/wasm/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs spiral/apps/wasm/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / $env:CI:'' Compiling fable_library_rust v0.1.0 (/mnt/c/home/git/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling spiral_wasm v0.0.1 (/mnt/c/home/git/spiral/apps/wasm) Finished `release` profile [optimized] target(s) in 1m 59s Compiling fable_library_rust v0.1.0 (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling plot v0.0.1 (C:\home\git\spiral\deps\polyglot\apps\plot) warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:534:33 | 534 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 534 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 534 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:534:58 | 534 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 534 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 534 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:709:33 | 709 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 709 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 709 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:709:58 | 709 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 709 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 709 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:975:30 | 975 | break '_method29 (match v0_1.get().clone().as_ref() { | ^ ... 1013 | }); | ^ | help: remove these parentheses | 975 ~ break '_method29 match v0_1.get().clone().as_ref() { 976 | Runtime::UH0::UH0_0 => (v1_1.get().clone(), v2_1.get().clone(), v3.get().clone()), ... 1012 | } 1013 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1020:62 | 1020 | (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) | ^ ^ | help: remove these parentheses | 1020 - (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) 1020 + (Runtime::method30(v0_1, (v1_1) + 1_i32))(append(v2_1, string(" "))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1110:25 | 1110 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1110 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1110 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1198:25 | 1198 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1198 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1198 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1215:30 | 1215 | break '_method31 (match v2_1.get().clone().as_ref() { | ^ ... 1247 | }); | ^ | help: remove these parentheses | 1215 ~ break '_method31 match v2_1.get().clone().as_ref() { 1216 | Runtime::UH1::UH1_0 => { ... 1246 | } 1247 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1254:30 | 1254 | break '_method32 (if (v1_1.get().clone()) >= 2_i64 { | ^ ... 1285 | }); | ^ | help: remove these parentheses | 1254 ~ break '_method32 if (v1_1.get().clone()) >= 2_i64 { 1255 | false ... 1284 | } 1285 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1301:30 | 1301 | break '_method33 ({ | ^ ... 1399 | }); | ^ | help: remove these parentheses | 1301 ~ break '_method33 { 1302 | let v145: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1398 | } 1399 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1379:36 | 1379 | ... append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1379 - append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); 1379 + append(v0_1.get().clone(), (ofChar(v157_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1379:58 | 1379 | ... append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1379 - append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); 1379 + append((v0_1.get().clone()), ofChar(v157_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1415:30 | 1415 | break '_method34 (match v4.get().clone().as_ref() { | ^ ... 1450 | }); | ^ | help: remove these parentheses | 1415 ~ break '_method34 match v4.get().clone().as_ref() { 1416 | Runtime::UH1::UH1_0 => { ... 1449 | } 1450 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1457:30 | 1457 | break '_method35 (if (v1_1.get().clone()) >= 3_i64 { | ^ ... 1493 | }); | ^ | help: remove these parentheses | 1457 ~ break '_method35 if (v1_1.get().clone()) >= 3_i64 { 1458 | false ... 1492 | } 1493 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1509:30 | 1509 | break '_method36 ({ | ^ ... 1607 | }); | ^ | help: remove these parentheses | 1509 ~ break '_method36 { 1510 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1606 | } 1607 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1587:36 | 1587 | ... append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1587 - append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); 1587 + append(v0_1.get().clone(), (ofChar(v165_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1587:58 | 1587 | ... append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1587 - append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); 1587 + append((v0_1.get().clone()), ofChar(v165_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:30 | 1614 | break '_method37 (if (v1_1.get().clone()) >= (length(v0_1.get().clone())) { | ^ ... 1626 | }); | ^ | help: remove these parentheses | 1614 ~ break '_method37 if (v1_1.get().clone()) >= (length(v0_1.get().clone())) { 1615 | v1_1.get().clone() ... 1625 | } 1626 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1642:30 | 1642 | break '_method38 ({ | ^ ... 1717 | }); | ^ | help: remove these parentheses | 1642 ~ break '_method38 { 1643 | let v108: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1716 | } 1717 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1697:36 | 1697 | ... append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1697 - append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); 1697 + append(v0_1.get().clone(), (ofChar(v108_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1697:58 | 1697 | ... append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1697 - append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); 1697 + append((v0_1.get().clone()), ofChar(v108_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2155:37 | 2155 | ... ((Runtime::method30((v515) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2155 - ((Runtime::method30((v515) - 1_i32, 0_i32))(string(""))), 2155 + (Runtime::method30((v515) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3249:30 | 3249 | break '_method62 (if (v1_1.get().clone()) >= 4_i64 { | ^ ... 3290 | }); | ^ | help: remove these parentheses | 3249 ~ break '_method62 if (v1_1.get().clone()) >= 4_i64 { 3250 | false ... 3289 | } 3290 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3306:30 | 3306 | break '_method63 ({ | ^ ... 3391 | }); | ^ | help: remove these parentheses | 3306 ~ break '_method63 { 3307 | let v161: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 3390 | } 3391 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3371:36 | 3371 | ... append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3371 - append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); 3371 + append(v0_1.get().clone(), (ofChar(v161_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3371:58 | 3371 | ... append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3371 - append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); 3371 + append((v0_1.get().clone()), ofChar(v161_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3398:30 | 3398 | break '_method65 (if (v1_1.get().clone()) >= 3_i64 { | ^ ... 3434 | }); | ^ | help: remove these parentheses | 3398 ~ break '_method65 if (v1_1.get().clone()) >= 3_i64 { 3399 | false ... 3433 | } 3434 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3517:25 | 3517 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3517 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3517 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3584:28 | 3584 | append((ofChar('\\')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3584 - append((ofChar('\\')), (ofChar(v285_0_0.clone()))), 3584 + append(ofChar('\\'), (ofChar(v285_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3584:44 | 3584 | append((ofChar('\\')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3584 - append((ofChar('\\')), (ofChar(v285_0_0.clone()))), 3584 + append((ofChar('\\')), ofChar(v285_0_0.clone())), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3674:25 | 3674 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3674 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3674 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3741:28 | 3741 | append((ofChar('`')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3741 - append((ofChar('`')), (ofChar(v285_0_0.clone()))), 3741 + append(ofChar('`'), (ofChar(v285_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3741:43 | 3741 | append((ofChar('`')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3741 - append((ofChar('`')), (ofChar(v285_0_0.clone()))), 3741 + append((ofChar('`')), ofChar(v285_0_0.clone())), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3764:30 | 3764 | break '_method66 (match v4.get().clone().as_ref() { | ^ ... 3799 | }); | ^ | help: remove these parentheses | 3764 ~ break '_method66 match v4.get().clone().as_ref() { 3765 | Runtime::UH3::UH3_0 => { ... 3798 | } 3799 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3809:30 | 3809 | break '_method67 (match v0_1.get().clone().as_ref() { | ^ ... 3829 | }); | ^ | help: remove these parentheses | 3809 ~ break '_method67 match v0_1.get().clone().as_ref() { 3810 | Runtime::UH2::UH2_0 => v1_1.get().clone(), ... 3828 | } 3829 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3845:30 | 3845 | break '_method64 ({ | ^ ... 3973 | }); | ^ | help: remove these parentheses | 3845 ~ break '_method64 { 3846 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 3972 | } 3973 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4009:30 | 4009 | break '_method69 ({ | ^ ... 4106 | }); | ^ | help: remove these parentheses | 4009 ~ break '_method69 { 4010 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 4105 | } 4106 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4122:30 | 4122 | break '_method61 ({ | ^ ... 4653 | }); | ^ | help: remove these parentheses | 4122 ~ break '_method61 { 4123 | let v5: bool = string("") == (v1_1.get().clone()); ... 4652 | } 4653 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4289:96 | 4289 | ... append(((Runtime::method30((v4.get().clone()) | ^ ... 4292 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4289 ~ append((Runtime::method30((v4.get().clone()) 4290 | - 4291 | 1_i32, 4292 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4437:116 | 4437 | ... append(((Runtime::method30((v398) | ^ ... 4440 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4437 ~ append((Runtime::method30((v398) 4438 | - 4439 | 1_i32, 4440 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:481:33 | 481 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 481 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 481 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:481:58 | 481 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 481 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 481 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:760:33 | 760 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 760 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 760 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:760:58 | 760 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 760 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 760 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2579:81 | 2579 | (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2579 - (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2579 + (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2579:87 | 2579 | (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2579 - (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2579 + (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1)) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2593:13 | 2593 | ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2593 - ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))), 2593 + (File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2594:13 | 2594 | (v0_1), | ^ ^ | help: remove these parentheses | 2594 - (v0_1), 2594 + v0_1, | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3408:31 | 3408 | break '_method141 (if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { | ^ ... 3449 | }); | ^ | help: remove these parentheses | 3408 ~ break '_method141 if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { 3409 | File_system::US17::US17_0(v4.get().clone()) ... 3448 | } 3449 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3433:25 | 3433 | (concat(new_array(&[ | ^ ... 3440 | ]))), | ^ | help: remove these parentheses | 3433 ~ concat(new_array(&[ 3434 | string("file_system.find_parent / No parent for "), ... 3439 | }, 3440 ~ ])), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3477:21 | 3477 | (concat(new_array(&[ | ^ ... 3480 | ]))), | ^ | help: remove these parentheses | 3477 ~ concat(new_array(&[ 3478 | string("file_system.find_parent / No parent for "), 3479 | if v2_1 { string("file") } else { string("dir") }, 3480 ~ ])), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1)) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13 | 108 | ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 108 - ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), 108 + (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13 | 109 | (v2_1), | ^ ^ | help: remove these parentheses | 109 - (v2_1), 109 + v2_1, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13 | 128 | (v2_1.clone()), | ^ ^ | help: remove these parentheses | 128 - (v2_1.clone()), 128 + v2_1.clone(), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13 | 129 | ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 129 - ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), 129 + (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17 | 345 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 345 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 345 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:17 | 410 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 410 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 410 + append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:25 | 410 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 410 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 410 + (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:73 | 410 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 410 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 410 + (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:33 | 410 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 410 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 410 + (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:55 | 410 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 410 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 410 + (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:627:33 | 627 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 627 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 627 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:627:58 | 627 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 627 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 627 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:559:33 | 559 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 559 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 559 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:559:58 | 559 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 559 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 559 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:736:29 | 736 | break '_method8 ({ | ^ ... 773 | }); | ^ | help: remove these parentheses | 736 ~ break '_method8 { 737 | let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); ... 772 | } 773 ~ }; | warning: `plot` (lib) generated 69 warnings (run `cargo fix --lib -p plot` to apply 69 suggestions) Finished `release` profile [optimized] target(s) in 26.41s polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\lib\spiral / ResolvedLocation: C:\home\git\spiral\lib\spiral polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:54 d #2 runtime.execute_with_options_async / { exit_code = 0; output_length = 127100; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:54 d #1 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3 00:00:54 d #3 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:50 d #4 runtime.execute_with_options_async / { exit_code = 0; output_length = 69296; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:50 d #2 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3 00:01:50 d #5 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:14 d #6 runtime.execute_with_options_async / { exit_code = 0; output_length = 135220; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:14 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3 00:03:14 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:47 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 50393; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:47 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3 00:03:47 d #9 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:29 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 18110; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:29 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3 00:04:29 d #11 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:46 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 14781; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:46 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3 00:04:46 d #13 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:04 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 17696; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:04 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3 00:05:04 d #15 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:24 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 19895; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:24 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3 00:05:24 d #17 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:39 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 8723; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:39 d #9 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3 00:05:39 d #19 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:08 d #20 runtime.execute_with_options_async / { exit_code = 0; output_length = 36390; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:08 d #10 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3 00:06:08 d #21 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:38 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 99991; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:38 d #11 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3 00:07:38 d #23 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:00 d #24 runtime.execute_with_options_async / { exit_code = 0; output_length = 20906; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:00 d #12 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3 00:08:00 d #25 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:54 d #26 runtime.execute_with_options_async / { exit_code = 0; output_length = 46587; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:54 d #13 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3 00:08:54 d #27 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:54 d #28 runtime.execute_with_options_async / { exit_code = 0; output_length = 26110; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:54 d #14 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3 00:09:54 d #29 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:20 d #30 runtime.execute_with_options_async / { exit_code = 0; output_length = 17289; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:20 d #15 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3 00:10:20 d #31 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:46 d #32 runtime.execute_with_options_async / { exit_code = 0; output_length = 23896; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:46 d #16 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3 00:10:46 d #33 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:57 d #34 runtime.execute_with_options_async / { exit_code = 0; output_length = 6479; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:57 d #17 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3 00:10:57 d #35 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:22 d #36 runtime.execute_with_options_async / { exit_code = 0; output_length = 102819; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:22 d #18 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3 00:12:22 d #37 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:29 d #38 runtime.execute_with_options_async / { exit_code = 0; output_length = 58723; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:29 d #19 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3 00:13:29 d #39 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:45 d #40 runtime.execute_with_options_async / { exit_code = 0; output_length = 11877; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:45 d #20 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3 00:13:45 d #41 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:59 d #42 runtime.execute_with_options_async / { exit_code = 0; output_length = 10156; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:59 d #21 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3 00:13:59 d #43 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:29 d #44 runtime.execute_with_options_async / { exit_code = 0; output_length = 23646; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:14:29 d #22 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3 00:14:29 d #45 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:05 d #46 runtime.execute_with_options_async / { exit_code = 0; output_length = 103951; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:05 d #23 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3 00:15:05 d #47 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:33 d #48 runtime.execute_with_options_async / { exit_code = 0; output_length = 22783; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:33 d #24 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3 00:15:33 d #49 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:49 d #50 runtime.execute_with_options_async / { exit_code = 0; output_length = 9145; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:49 d #25 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3 00:15:49 d #51 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:03 d #52 runtime.execute_with_options_async / { exit_code = 0; output_length = 10792; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:03 d #26 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3 00:16:03 d #53 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:01 d #54 runtime.execute_with_options_async / { exit_code = 0; output_length = 94496; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:01 d #27 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3 00:17:01 d #55 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:12 d #56 runtime.execute_with_options_async / { exit_code = 0; output_length = 6673; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:12 d #28 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3 00:17:12 d #57 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:26 d #58 runtime.execute_with_options_async / { exit_code = 0; output_length = 7613; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:26 d #29 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3 00:17:26 d #59 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:49 d #60 runtime.execute_with_options_async / { exit_code = 0; output_length = 27473; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:49 d #30 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3 00:17:49 d #61 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:15 d #62 runtime.execute_with_options_async / { exit_code = 0; output_length = 28212; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:15 d #31 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3 00:18:15 d #63 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:33 d #64 runtime.execute_with_options_async / { exit_code = 0; output_length = 22107; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:33 d #32 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3 00:18:33 d #65 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:15 d #66 runtime.execute_with_options_async / { exit_code = 0; output_length = 38934; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:15 d #33 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3 00:19:15 d #67 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:31 d #68 runtime.execute_with_options_async / { exit_code = 0; output_length = 9823; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:31 d #34 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3 00:19:31 d #69 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:42 d #70 runtime.execute_with_options_async / { exit_code = 0; output_length = 5136; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:42 d #35 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3 00:19:42 d #71 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:53 d #72 runtime.execute_with_options_async / { exit_code = 0; output_length = 5184; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:53 d #36 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3 00:19:53 d #73 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:58 d #74 runtime.execute_with_options_async / { exit_code = 0; output_length = 98751; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:58 d #37 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3 00:21:58 d #75 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:14 d #76 runtime.execute_with_options_async / { exit_code = 0; output_length = 30148; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:14 d #38 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3 00:00:00 d #1 writeDibCode / output: Spi / path: common.dib 00:00:00 d #1 writeDibCode / output: Spi / path: networking.dib 00:00:00 d #1 writeDibCode / output: Spi / path: threading.dib 00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib 00:00:00 d #1 writeDibCode / output: Spi / path: async.dib 00:00:00 d #1 writeDibCode / output: Spi / path: crypto.dib 00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib 00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib 00:00:00 d #2 parseDibCode / output: Spi / file: testing.dib 00:00:00 d #4 parseDibCode / output: Spi / file: networking.dib 00:00:00 d #4 parseDibCode / output: Spi / file: runtime.dib 00:00:00 d #4 parseDibCode / output: Spi / file: async.dib 00:00:00 d #4 parseDibCode / output: Spi / file: trace.dib 00:00:00 d #2 parseDibCode / output: Spi / file: crypto.dib 00:00:00 d #2 parseDibCode / output: Spi / file: threading.dib 00:00:00 d #4 parseDibCode / output: Spi / file: common.dib 00:00:00 d #8 writeDibCode / output: Spi / path: resultm.dib 00:00:00 d #8 writeDibCode / output: Spi / path: base.dib 00:00:00 d #8 writeDibCode / output: Spi / path: env.dib 00:00:00 d #8 writeDibCode / output: Spi / path: iter.dib 00:00:00 d #8 writeDibCode / output: Spi / path: parsing.dib 00:00:00 d #8 writeDibCode / output: Spi / path: console.dib 00:00:00 d #12 parseDibCode / output: Spi / file: resultm.dib 00:00:00 d #13 parseDibCode / output: Spi / file: base.dib 00:00:00 d #14 parseDibCode / output: Spi / file: iter.dib 00:00:00 d #15 parseDibCode / output: Spi / file: env.dib 00:00:00 d #16 parseDibCode / output: Spi / file: parsing.dib 00:00:00 d #17 parseDibCode / output: Spi / file: console.dib 00:00:00 d #18 writeDibCode / output: Spi / path: date_time.dib 00:00:00 d #19 parseDibCode / output: Spi / file: date_time.dib 00:00:00 d #20 writeDibCode / output: Spi / path: guid.dib 00:00:00 d #22 writeDibCode / output: Spi / path: math.dib 00:00:00 d #20 writeDibCode / output: Spi / path: file_system.dib 00:00:00 d #23 writeDibCode / output: Spi / path: mapm.dib 00:00:00 d #24 writeDibCode / output: Spi / path: optionm'.dib 00:00:00 d #25 parseDibCode / output: Spi / file: math.dib 00:00:00 d #26 parseDibCode / output: Spi / file: guid.dib 00:00:00 d #27 parseDibCode / output: Spi / file: file_system.dib 00:00:00 d #27 parseDibCode / output: Spi / file: mapm.dib 00:00:00 d #29 parseDibCode / output: Spi / file: optionm'.dib 00:00:00 d #30 writeDibCode / output: Spi / path: am'.dib 00:00:00 d #30 writeDibCode / output: Spir / path: sm'.dib 00:00:00 d #30 writeDibCode / output: Spi / path: sm'.dib 00:00:00 d #33 parseDibCode / output: Spi / file: am'.dib 00:00:00 d #35 parseDibCode / output: Spi / file: sm'.dib 00:00:00 d #33 parseDibCode / output: Spir / file: sm'.dib 00:00:00 d #36 writeDibCode / output: Spi / path: listm'.dib 00:00:00 d #36 writeDibCode / output: Spi / path: reflection.dib 00:00:00 d #38 parseDibCode / output: Spi / file: listm'.dib 00:00:00 d #39 parseDibCode / output: Spi / file: reflection.dib 00:00:00 d #40 writeDibCode / output: Spi / path: python.dib 00:00:00 d #41 writeDibCode / output: Spi / path: typescript.dib 00:00:00 d #42 parseDibCode / output: Spi / file: python.dib 00:00:00 d #43 parseDibCode / output: Spi / file: typescript.dib 00:00:00 d #44 writeDibCode / output: Spi / path: benchmark.dib 00:00:00 d #45 parseDibCode / output: Spi / file: benchmark.dib 00:00:00 d #46 writeDibCode / output: Spi / path: stream.dib 00:00:00 d #47 parseDibCode / output: Spi / file: stream.dib 00:00:00 d #48 writeDibCode / output: Spi / path: seq.dib 00:00:00 d #49 parseDibCode / output: Spi / file: seq.dib 00:00:00 d #50 writeDibCode / output: Spi / path: util.dib 00:00:00 d #51 parseDibCode / output: Spi / file: util.dib 00:00:00 d #52 writeDibCode / output: Spi / path: platform.dib 00:00:00 d #53 parseDibCode / output: Spi / file: platform.dib 00:00:00 d #54 writeDibCode / output: Spi / path: rust/rust.dib 00:00:00 d #55 writeDibCode / output: Spi / path: rust/testing.dib 00:00:00 d #56 parseDibCode / output: Spi / file: rust/rust.dib 00:00:00 d #57 parseDibCode / output: Spi / file: rust/testing.dib 00:00:00 d #58 writeDibCode / output: Spi / path: rust/near.dib 00:00:00 d #59 parseDibCode / output: Spi / file: rust/near.dib 00:00:00 d #60 writeDibCode / output: Spi / path: rust/near_workspaces.dib 00:00:00 d #61 parseDibCode / output: Spi / file: rust/near_workspaces.dib 00:00:00 d #62 writeDibCode / output: Spi / path: physics.dib 00:00:00 d #63 parseDibCode / output: Spi / file: physics.dib 00:00:00 d #64 writeDibCode / output: Spi / path: leptos/leptos.dib 00:00:00 d #65 parseDibCode / output: Spi / file: leptos/leptos.dib 00:00:00 d #66 writeDibCode / output: Spi / path: wasm.dib 00:00:00 d #67 parseDibCode / output: Spi / file: wasm.dib 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/scripts/build.dib", "--output-path", "c:/home/git/polyglot/scripts/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/scripts/build.dib" --output-path "c:/home/git/polyglot/scripts/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── pwsh ──────────────────────────────────────────────────────────────────────── > . ./nbs_header.ps1 > . ./core.ps1 > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/builder/build.ps1 } | Invoke-Block > > ── [ 1.44m - stdout ] ────────────────────────────────────────────────────────── > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ # DibParser (Polyglot) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ #r > │ > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ dard2.1/FSharp.Control.AsyncSeq.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ 0/System.Reactive.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ netstandard2.0/System.Reactive.Linq.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ arsec.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ arsecCS.dll" > │ > │ ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ ls ~/.nuget/packages/argu > │ > │ ── [ 447.97ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ > │ │ Directory: > C:\Users\i574n\.nuget\packages\argu > │ │ > │ │ Mode > LastWriteTime > │ Length Name > │ │ ---- > ------------- > │ ------ ---- > │ │ d---- 2023-05-17 3:38 PM│ 6.1.1 > │ │ d---- 2024-03-12 8:22 PM│ 6.1.4 > │ │ d---- 2024-01-29 5:12 PM│ 6.1.5 > │ │ d---- 2024-03-12 8:20 PM│ 6.2.0 > │ │ d---- 2024-02-23 6:50 PM│ 6.2.1 > │ │ d---- 2024-03-12 8:15 PM│ 6.2.2 > │ │ d---- 2024-05-14 8:20 PM│ 6.2.3 > │ │ d---- 2024-06-06 7:37 PM│ 6.2.4 > │ │ d---- 2024-12-08 11:22 AM│ 6.2.5 > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ #if !INTERACTIVE > │ open Lib > │ #endif > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ open Common > │ open FParsec > │ open SpiralFileSystem.Operators > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## escapeCell (test) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let inline escapeCell input = > │ input > │ |> SpiralSm.split "\n" > │ |> Array.map (function > │ | line when line |> SpiralSm.starts_with "\\#!" || > line |> > │ SpiralSm.starts_with "\\#r" -> > │ System.Text.RegularExpressions.Regex.Replace > (line, "^\\\\#", "#") > │ | line -> line > │ ) > │ |> SpiralSm.concat "\n" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ $"a{nl}\\#!magic{nl}b{nl}" > │ |> escapeCell > │ |> _assertEqual ( > │ $"a{nl}#!magic{nl}b{nl}" > │ ) > │ > │ ── [ 51.58ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "a > │ │ #!magic > │ │ b > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## magicMarker > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let magicMarker : Parser<string, unit> = pstring "#!" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic" > │ |> run magicMarker > │ |> _assertEqual ( > │ Success ("#!", (), Position ("", 2, 1, 3)) > │ ) > │ > │ ── [ 34.13ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "#!" > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "##!magic" > │ |> run magicMarker > │ |> _assertEqual ( > │ Failure ( > │ $"Error in Ln: 1 Col: > 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > │ ParserError ( > │ Position ("", 0, 1, 1), > │ (), > │ ErrorMessageList (ExpectedString "#!") > │ ), > │ () > │ ) > │ ) > │ > │ ── [ 32.64ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Failure: > │ │ Error in Ln: 1 Col: 1 > │ │ ##!magic > │ │ ^ > │ │ Expecting: '#!' > │ │ > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## magicCommand > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let magicCommand = > │ magicMarker > │ >>. manyTill anyChar newline > │ |>> (System.String.Concat >> SpiralSm.trim) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ a" > │ |> run magicCommand > │ |> _assertEqual ( > │ Success ("magic", (), Position ("", 8, 2, 1)) > │ ) > │ > │ ── [ 23.15ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "magic" > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ " #!magic > │ > │ a" > │ |> run magicCommand > │ |> _assertEqual ( > │ Failure ( > │ $"Error in Ln: 1 Col: 1{nl} > #!magic{nl}^{nl}Expecting: '#!'{nl}", > │ ParserError ( > │ Position ("", 0, 1, 1), > │ (), > │ ErrorMessageList (ExpectedString "#!") > │ ), > │ () > │ ) > │ ) > │ > │ ── [ 23.63ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Failure: > │ │ Error in Ln: 1 Col: 1 > │ │ #!magic > │ │ ^ > │ │ Expecting: '#!' > │ │ > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## content > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let content = > │ (newline >>. magicMarker) <|> (eof >>. preturn "") > │ |> attempt > │ |> lookAhead > │ |> manyTill anyChar > │ |>> (System.String.Concat >> SpiralSm.trim) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ > │ a > │ > │ > │ " > │ |> run content > │ |> _assertEqual ( > │ Success ("#!magic > │ > │ > │ a", (), Position ("", 14, 7, 1)) > │ ) > │ > │ ── [ 21.68ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "#!magic > │ │ > │ │ > │ │ a" > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Output > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Output = > │ | Fs > │ | Md > │ | Spi > │ | Spir > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Magic > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Magic = > │ | Fsharp > │ | Markdown > │ | Spiral of Output > │ | Magic of string > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## kernelOutputs > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline kernelOutputs magic = > │ match magic with > │ | Fsharp -> [[ Fs ]] > │ | Markdown -> [[ Md ]] > │ | Spiral output -> [[ output ]] > │ | _ -> [[]] > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Block > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Block = > │ { > │ magic : Magic > │ content : string > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## block > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let block = > │ pipe2 > │ magicCommand > │ content > │ (fun magic content -> > │ let magic, content = > │ match magic with > │ | "fsharp" -> Fsharp, content > │ | "markdown" -> Markdown, content > │ | "spiral" -> > │ let output = if content |> > SpiralSm.contains "//// real\n" > │ then Spir else Spi > │ let content = > │ if output = Spi > │ then content > │ else > │ content > │ |> SpiralSm.replace "//// > real\n\n" "" > │ |> SpiralSm.replace "//// real\n" > "" > │ Spiral output, content > │ | magic -> magic |> Magic, content > │ { > │ magic = magic > │ content = content > │ }) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ > │ a > │ > │ > │ " > │ |> run block > │ |> _assertEqual ( > │ Success ( > │ { magic = Magic "magic"; content = "a" }, > │ (), > │ Position ("", 14, 7, 1) > │ ) > │ ) > │ > │ ── [ 38.58ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: { magic = Magic "magic" > │ │ content = "a" } > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## blocks > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let blocks = > │ skipMany newline > │ >>. sepEndBy block (skipMany1 newline) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ > │ "#!magic1 > │ > │ a > │ > │ \#!magic2 > │ > │ b > │ > │ " > │ |> escapeCell > │ |> run blocks > │ |> _assertEqual ( > │ Success ( > │ [[ > │ { magic = Magic "magic1"; content = "a" } > │ { magic = Magic "magic2"; content = "b" } > │ ]], > │ (), > │ Position ("", 26, 9, 1) > │ ) > │ ) > │ > │ ── [ 83.83ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: [{ magic = Magic "magic1" > │ │ content = "a" }; { magic = Magic > "magic2" > │ │ content = "b" }] > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## formatBlock > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline formatBlock output (block : Block) = > │ match output, block with > │ | output, { magic = Markdown; content = content } -> > │ let markdownComment = > │ match output with > │ | Spi | Spir -> "/// " > │ | Fs -> "/// " > │ | _ -> "" > │ content > │ |> SpiralSm.split "\n" > │ |> Array.map (SpiralSm.trim_end [[||]]) > │ |> Array.filter (SpiralSm.ends_with " (test)" >> not) > │ |> Array.map (function > │ | "" -> markdownComment > │ | line -> > System.Text.RegularExpressions.Regex.Replace (line, > │ "^\\s*", $"$&{markdownComment}") > │ ) > │ |> SpiralSm.concat "\n" > │ | Fs, { magic = Fsharp; content = content } -> > │ let trimmedContent = content |> SpiralSm.trim > │ if trimmedContent |> SpiralSm.contains "//// test\n" > │ || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ then "" > │ else > │ content > │ |> SpiralSm.split "\n" > │ |> Array.filter (SpiralSm.trim_start [[||]] >> > SpiralSm.starts_with > │ "#r" >> not) > │ |> SpiralSm.concat "\n" > │ | (Spi | Spir), { magic = Spiral output'; content = > content } when output' = > │ output -> > │ let trimmedContent = content |> SpiralSm.trim > │ if trimmedContent |> SpiralSm.contains "//// test\n" > │ || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ then "" > │ else content > │ | _ -> "" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!markdown > │ > │ > │ a > │ > │ b > │ > │ c > │ > │ > │ \#!markdown > │ > │ > │ c > │ > │ > │ \#!fsharp > │ > │ > │ let a = 1" > │ |> escapeCell > │ |> run block > │ |> function > │ | Success (block, _, _) -> formatBlock Fs block > │ | Failure (msg, _, _) -> failwith msg > │ |> _assertEqual "/// a > │ /// > │ /// b > │ /// > │ /// c" > │ > │ ── [ 46.91ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "/// a > │ │ /// > │ │ /// b > │ │ /// > │ │ /// c" > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## formatBlocks > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline formatBlocks output blocks = > │ blocks > │ |> List.map (fun block -> > │ block, formatBlock output block > │ ) > │ |> List.filter (snd >> (<>) "") > │ |> fun list -> > │ (list, (None, [[]])) > │ ||> List.foldBack (fun (block, content) (lastMagic, > acc) -> > │ let lineBreak = > │ if block.magic = Markdown && lastMagic <> > Some Markdown && > │ lastMagic <> None > │ then "" > │ else "\n" > │ Some block.magic, $"{content}{lineBreak}" :: acc > │ ) > │ |> snd > │ |> SpiralSm.concat "\n" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!markdown > │ > │ > │ a > │ > │ b > │ > │ > │ \#!markdown > │ > │ > │ c > │ > │ > │ \#!fsharp > │ > │ > │ let a = 1 > │ > │ \#!markdown > │ > │ d (test) > │ > │ \#!fsharp > │ > │ //// test > │ > │ let a = 2 > │ > │ \#!markdown > │ > │ e > │ > │ \#!fsharp > │ > │ let a = 3" > │ |> escapeCell > │ |> run blocks > │ |> function > │ | Success (blocks, _, _) -> formatBlocks Fs blocks > │ | Failure (msg, _, _) -> failwith msg > │ |> _assertEqual "/// a > │ /// > │ /// b > │ > │ /// c > │ let a = 1 > │ > │ /// e > │ let a = 3 > │ " > │ > │ ── [ 65.67ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "/// a > │ │ /// > │ │ /// b > │ │ > │ │ /// c > │ │ let a = 1 > │ │ > │ │ /// e > │ │ let a = 3 > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## parse > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline parse output input = > │ match run blocks input with > │ | Success (blocks, _, _) -> > │ let blocks = > │ blocks > │ |> List.filter (fun block -> > │ block.magic |> kernelOutputs |> List.contains > output || > │ block.magic = Markdown > │ ) > │ > │ match blocks with > │ | { magic = Markdown; content = content } :: _ > │ when output = Fs > │ && content |> SpiralSm.starts_with "# " > │ && content |> SpiralSm.ends_with ")" > │ -> > │ let inline indentBlock (block : Block) = > │ { block with > │ content = > │ block.content > │ |> SpiralSm.split "\n" > │ |> Array.fold > │ (fun (lines, isMultiline) line -> > │ let trimmedLine = line |> > SpiralSm.trim > │ if trimmedLine = "" > │ then "" :: lines, isMultiline > │ else > │ let inline > singleQuoteLine () = > │ trimmedLine |> > Seq.sumBy ((=) '"' >> > │ System.Convert.ToInt32) = 1 > │ && trimmedLine |> > SpiralSm.contains > │ @"'""'" |> not > │ && trimmedLine |> > SpiralSm.ends_with "{" > │ |> not > │ && trimmedLine |> > SpiralSm.ends_with > │ "{|" |> not > │ && trimmedLine |> > SpiralSm.starts_with > │ "}" |> not > │ && trimmedLine |> > SpiralSm.starts_with > │ "|}" |> not > │ > │ match isMultiline, > trimmedLine |> > │ SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > │ | false, [[| _; _ |]] -> > │ $" {line}" :: > lines, true > │ > │ | true, [[| _; _ |]] -> > │ line :: lines, false > │ > │ | false, _ when > singleQuoteLine () -> > │ $" {line}" :: > lines, true > │ > │ | false, _ when line |> > SpiralSm.starts_with > │ "#" && block.magic = Fsharp -> > │ line :: lines, false > │ > │ | false, _ -> > │ $" {line}" :: > lines, false > │ > │ | true, _ when > singleQuoteLine () && line |> > │ SpiralSm.starts_with " " -> > │ $" {line}" :: > lines, false > │ > │ | true, _ when > singleQuoteLine () -> > │ line :: lines, false > │ > │ | true, _ -> > │ line :: lines, true > │ ) > │ ([[]], false) > │ |> fst > │ |> List.rev > │ |> SpiralSm.concat "\n" > │ } > │ > │ let moduleName, namespaceName = > │ System.Text.RegularExpressions.Regex.Match > (content, @"# (.*) > │ \((.*)\)$") > │ |> fun m -> m.Groups.[[1]].Value, > m.Groups.[[2]].Value > │ > │ let moduleBlock = > │ { > │ magic = Fsharp > │ content = > │ $"#if !INTERACTIVE > │ namespace {namespaceName} > │ #endif > │ > │ module {moduleName} =" > │ } > │ > │ blocks > │ |> List.indexed > │ |> List.fold > │ (fun blocks (index, block) -> > │ match index with > │ | 0 -> blocks > │ | 1 -> indentBlock block :: moduleBlock > :: blocks > │ | _ -> indentBlock block :: blocks > │ ) > │ [[]] > │ |> List.rev > │ | _ -> blocks > │ |> Result.Ok > │ | Failure (errorMsg, _, _) -> Result.Error errorMsg > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let example1 = > │ $"""#!meta > │ > │ > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > │ "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > │ > │ \#!markdown > │ > │ # TestModule (TestNamespace) > │ > │ \#!fsharp > │ > │ \#!import file.dib > │ > │ \#!fsharp > │ > │ \#r "nuget:Expecto" > │ > │ \#!markdown > │ > │ ## ParserLibrary > │ > │ \#!fsharp > │ > │ open System > │ > │ \#!markdown > │ > │ ## x (test) > │ > │ \#!fsharp > │ > │ //// ignore > │ > │ let x = 1 > │ > │ \#!spiral > │ > │ //// test > │ > │ inl x = 1i32 > │ > │ \#!spiral > │ > │ //// real > │ > │ inl x = 2i32 > │ > │ \#!spiral > │ > │ inl x = 3i32 > │ > │ \#!markdown > │ > │ ### TextInput > │ > │ \#!fsharp > │ > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{{ > │ 1 > │ }}1" > │ > │ let str4 = > │ $"1{{({{| > │ a = 1 > │ |}}).a}}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = {q}{q}{q}a{q}{q}{q} > │ > │ let long2 = > │ {q}{q}{q} > │ a > │ {q}{q}{q} > │ > │ \#!fsharp > │ > │ type Position = > │ {{ > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ }}""" > │ |> escapeCell > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Fs > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Fs) > │ |> _assertEqual $"""#if !INTERACTIVE > │ namespace TestNamespace > │ #endif > │ > │ module TestModule = > │ > │ /// ## ParserLibrary > │ open System > │ > │ /// ### TextInput > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{{ > │ 1 > │ }}1" > │ > │ let str4 = > │ $"1{{({{| > │ a = 1 > │ |}}).a}}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = {q}{q}{q}a{q}{q}{q} > │ > │ let long2 = > │ {q}{q}{q} > │ a > │ {q}{q}{q} > │ > │ type Position = > │ {{ > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ }} > │ """ > │ > │ ── [ 168.12ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "#if !INTERACTIVE > │ │ namespace TestNamespace > │ │ #endif > │ │ > │ │ module TestModule = > │ │ > │ │ /// ## ParserLibrary > │ │ open System > │ │ > │ │ /// ### TextInput > │ │ let str1 = "abc > │ │ def" > │ │ > │ │ let str2 = > │ │ "abc\ > │ │ def" > │ │ > │ │ let str3 = > │ │ $"1{ > │ │ 1 > │ │ }1" > │ │ > │ │ let str4 = > │ │ $"1{({| > │ │ a = 1 > │ │ |}).a}1" > │ │ > │ │ let str5 = > │ │ "abc \ > │ │ def" > │ │ > │ │ let x = > │ │ match '"' with > │ │ | '"' -> true > │ │ | _ -> false > │ │ > │ │ let long1 = """a""" > │ │ > │ │ let long2 = > │ │ """ > │ │ a > │ │ """ > │ │ > │ │ type Position = > │ │ { > │ │ #if INTERACTIVE > │ │ line : string > │ │ #else > │ │ line : int > │ │ #endif > │ │ column : int > │ │ } > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Md > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Md) > │ |> _assertEqual "# TestModule (TestNamespace) > │ > │ ## ParserLibrary > │ > │ ### TextInput > │ " > │ > │ ── [ 149.43ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "# TestModule (TestNamespace) > │ │ > │ │ ## ParserLibrary > │ │ > │ │ ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Spi > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Spi) > │ |> _assertEqual "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 3i32 > │ > │ /// ### TextInput > │ " > │ > │ ── [ 159.24ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "/// # TestModule (TestNamespace) > │ │ > │ │ /// ## ParserLibrary > │ │ inl x = 3i32 > │ │ > │ │ /// ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Spir > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Spir) > │ |> _assertEqual "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 2i32 > │ > │ /// ### TextInput > │ " > │ > │ ── [ 148.33ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "/// # TestModule (TestNamespace) > │ │ > │ │ /// ## ParserLibrary > │ │ inl x = 2i32 > │ │ > │ │ /// ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## parseDibCode > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline parseDibCode output file = async { > │ trace Debug > │ (fun () -> "parseDibCode") > │ (fun () -> $"output: {output} / file: {file} / > {_locals ()}") > │ let! input = file |> SpiralFileSystem.read_all_text_async > │ match parse output input with > │ | Result.Ok blocks -> return blocks |> formatBlocks > output > │ | Result.Error msg -> return failwith msg > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## writeDibCode > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline writeDibCode output path = async { > │ trace Debug > │ (fun () -> "writeDibCode") > │ (fun () -> $"output: {output} / path: {path} / > {_locals ()}") > │ let! result = parseDibCode output path > │ let pathDir = path |> System.IO.Path.GetDirectoryName > │ let fileNameWithoutExt = > │ match output, path |> > System.IO.Path.GetFileNameWithoutExtension with > │ | Spir, fileNameWithoutExt -> > $"{fileNameWithoutExt}_real" > │ | _, fileNameWithoutExt -> fileNameWithoutExt > │ let outputPath = pathDir </> > $"{fileNameWithoutExt}.{output |> string |> > │ SpiralSm.to_lower}" > │ do! result |> SpiralFileSystem.write_all_text_async > outputPath > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Arguments > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ [[<RequireQualifiedAccess>]] > │ type Arguments = > │ | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.Mandatory>]] > │ File of file : string * Output > │ > │ interface Argu.IArgParserTemplate with > │ member s.Usage = > │ match s with > │ | File _ -> nameof File > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > │ ── [ 82.38ms - return value ] > ────────────────────────────────────────────────── > │ │ "USAGE: dotnet-repl [--help] <file> > <fs|md|spi|spir> > │ │ > │ │ FILE: > │ │ > │ │ <file> <fs|md|spi|spir> > │ │ File > │ │ > │ │ OPTIONS: > │ │ > │ │ --help display this > list of options. > │ │ " > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## main > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let main args = > │ let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > │ let files = > │ argsMap.[[nameof Arguments.File]] > │ |> List.map (function > │ | Arguments.File (path, output) -> path, output > │ ) > │ > │ files > │ |> List.map (fun (path, output) -> path |> writeDibCode > output) > │ |> Async.Parallel > │ |> Async.Ignore > │ |> Async.runWithTimeout 30000 > │ |> function > │ | Some () -> 0 > │ | None -> 1 > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let args = > │ System.Environment.GetEnvironmentVariable "ARGS" > │ |> SpiralRuntime.split_args > │ |> Result.toArray > │ |> Array.collect id > │ > │ match args with > │ | [[||]] -> 0 > │ | args -> if main args = 0 then 0 else failwith "main failed" > │ > │ ── [ 146.62ms - return value ] > ───────────────────────────────────────────────── > │ │ <div class="dni-plaintext"><pre>0 > │ │ </pre></div><style> > │ │ .dni-code-hint { > │ │ font-style: italic; > │ │ overflow: hidden; > │ │ white-space: nowrap; > │ │ } > │ │ .dni-treeview { > │ │ white-space: nowrap; > │ │ } > │ │ .dni-treeview td { > │ │ vertical-align: top; > │ │ text-align: start; > │ │ } > │ │ details.dni-treeview { > │ │ padding-left: 1em; > │ │ } > │ │ table td { > │ │ text-align: start; > │ │ } > │ │ table tr { > │ │ vertical-align: top; > │ │ margin: 0em 0px; > │ │ } > │ │ table tr td pre > │ │ { > │ │ vertical-align: top !important; > │ │ margin: 0em 0px !important; > │ │ } > │ │ table th { > │ │ text-align: start; > │ │ } > │ │ </style> > │ > │ ── [ 147.30ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ 00:00:05 d #1 writeDibCode / output: > Fs / path: > │ Builder.dib > │ │ 00:00:05 d #2 parseDibCode / output: > Fs / file: > │ Builder.dib > │ │ > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Builder.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/builder/Builder.dib", "--output-path", > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/builder/Builder.dib" --output-path > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Builder (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildProject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildProject runtime outputDir path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > let extension = fullPath |> System.IO.Path.GetExtension > │ > > │ > trace Debug > │ > (fun () -> "buildProject") > │ > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > │ > > │ > match extension with > │ > | ".fsproj" -> () > │ > | _ -> failwith "Invalid project file" > │ > > │ > let runtimes = > │ > runtime > │ > |> Option.map List.singleton > │ > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > │ > > │ > let outputDir = outputDir |> Option.defaultValue "dist" > │ > > │ > return! > │ > runtimes > │ > |> List.map (fun runtime -> async { > │ > let command = $@"dotnet publish ""{path}"" > --configuration Release > │ > --output ""{outputDir}"" --runtime {runtime}" > │ > let! exitCode, _result = > │ > SpiralRuntime.execution_options (fun x -> > │ > { x with > │ > l0 = command > │ > l6 = Some fileDir > │ > } > │ > ) > │ > |> SpiralRuntime.execute_with_options_async > │ > return exitCode > │ > }) > │ > |> Async.Sequential > │ > |> Async.map Array.sum > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## persistCodeProject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline persistCodeProject packages modules name hash > code = async { > │ > trace Debug > │ > (fun () -> "persistCodeProject") > │ > (fun () -> $"packages: {packages} / modules: > {modules} / name: {name} / > │ > hash: {hash} / code.Length: {code |> String.length} / > {_locals ()}") > │ > > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root > () > │ > > │ > let targetDir = > │ > let targetDir = workspaceRoot </> "target/Builder" > </> name > │ > match hash with > │ > | Some hash -> targetDir </> "packages" </> hash > │ > | None -> targetDir > │ > targetDir |> System.IO.Directory.CreateDirectory |> > ignore > │ > > │ > let filePath = targetDir </> $"{name}.fs" |> > System.IO.Path.GetFullPath > │ > do! code |> SpiralFileSystem.write_all_text_exists > filePath > │ > > │ > let modulesCode = > │ > modules > │ > |> List.map (fun path -> $"""<Compile > Include="{workspaceRoot </> path}" > │ > />""") > │ > |> SpiralSm.concat "\n " > │ > > │ > let fsprojPath = targetDir </> $"{name}.fsproj" > │ > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > │ > <PropertyGroup> > │ > <TargetFramework>net9.0</TargetFramework> > │ > <LangVersion>preview</LangVersion> > │ > <RollForward>Major</RollForward> > │ > > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ > > <ServerGarbageCollection>true</ServerGarbageCollection> > │ > > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ > <PublishAot>false</PublishAot> > │ > <PublishTrimmed>false</PublishTrimmed> > │ > <PublishSingleFile>true</PublishSingleFile> > │ > <SelfContained>true</SelfContained> > │ > <Version>0.0.1-alpha.1</Version> > │ > <OutputType>Exe</OutputType> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > │ > <DefineConstants>_FREEBSD</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > │ > <DefineConstants>_LINUX</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > │ > <DefineConstants>_OSX</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > │ > <DefineConstants>_WINDOWS</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <ItemGroup> > │ > {modulesCode} > │ > <Compile Include="{filePath}" /> > │ > </ItemGroup> > │ > > │ > <ItemGroup> > │ > <FrameworkReference > Include="Microsoft.AspNetCore.App" /> > │ > </ItemGroup> > │ > > │ > <Import > Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > │ > </Project> > │ > """ > │ > do! fsprojCode |> > SpiralFileSystem.write_all_text_exists fsprojPath > │ > > │ > let paketReferencesPath = targetDir </> > "paket.references" > │ > let paketReferencesCode = > │ > "FSharp.Core" :: packages > │ > |> SpiralSm.concat "\n" > │ > do! paketReferencesCode |> > SpiralFileSystem.write_all_text_exists > │ > paketReferencesPath > │ > > │ > return fsprojPath > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildCode runtime packages modules outputDir > name code = async { > │ > let! fsprojPath = code |> persistCodeProject packages > modules name None > │ > let! exitCode = fsprojPath |> buildProject runtime > outputDir > │ > if exitCode <> 0 then > │ > let! fsprojText = fsprojPath |> > SpiralFileSystem.read_all_text_async > │ > trace Critical > │ > (fun () -> "buildCode") > │ > (fun () -> $"code: {code |> > SpiralSm.ellipsis_end 400} / fsprojText: > │ > {fsprojText} / {_locals ()}") > │ > return exitCode > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "1 + 1 |> ignore" > │ > |> buildCode None [[]] [[]] None "test1" > │ > |> Async.runWithTimeout 180000 > │ > |> _assertEqual (Some 0) > │ > > │ > ── [ 8.02s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ 00:00:02 d #1 persistCodeProject / > packages: [] / > │ > modules: [] / name: test1 / hash: / code.Length: 15 > │ > │ 00:00:02 d #2 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj > │ > │ 00:00:05 d #1 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:06 v #2 > Determining > projects to restore... > │ > │ 00:00:06 v #3 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:07 v #4 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:07 v #5 > Total time taken: > 0 milliseconds > │ > │ 00:00:07 v #6 > Restored > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in > 215 ms). > │ > │ 00:00:08 v #7 > test1 -> > │ > > c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\linux-x64\test1.dll > │ > │ 00:00:09 v #8 > test1 -> > │ > c:\home\git\polyglot\target\Builder\test1\dist\ > │ > │ 00:00:10 d #9 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 429; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:10 d #10 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:10 v #11 > Determining > projects to restore... > │ > │ 00:00:10 v #12 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:10 v #13 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:11 v #14 > Total time > taken: 0 milliseconds > │ > │ 00:00:11 v #15 > Restored > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in > 209 ms). > │ > │ 00:00:12 v #16 > test1 -> > │ > > c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\win-x64\test1.dll > │ > │ 00:00:13 v #17 > test1 -> > │ > c:\home\git\polyglot\target\Builder\test1\dist\ > │ > │ 00:00:13 d #18 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 427; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ Some 0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "1 + a |> ignore" > │ > |> buildCode None [[]] [[]] None "test2" > │ > |> Async.runWithTimeout 180000 > │ > |> _assertEqual (Some 2) > │ > > │ > ── [ 7.76s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ 00:00:10 d #3 persistCodeProject / > packages: [] / > │ > modules: [] / name: test2 / hash: / code.Length: 15 > │ > │ 00:00:10 d #4 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj > │ > │ 00:00:13 d #19 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:14 v #20 > Determining > projects to restore... > │ > │ 00:00:14 v #21 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:14 v #22 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:14 v #23 > Total time > taken: 0 milliseconds > │ > │ 00:00:15 v #24 > Restored > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in > 206 ms). > │ > │ 00:00:17 v #25 > > │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): > error FS0039: The value > │ > or constructor 'a' is not defined. > │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj] > │ > │ 00:00:17 d #26 > runtime.execute_with_options_async / { > │ > exit_code = 1; output_length = 451; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:17 d #27 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:18 v #28 > Determining > projects to restore... > │ > │ 00:00:18 v #29 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:18 v #30 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:18 v #31 > Total time > taken: 0 milliseconds > │ > │ 00:00:19 v #32 > Restored > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in > 202 ms). > │ > │ 00:00:21 v #33 > > │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): > error FS0039: The value > │ > or constructor 'a' is not defined. > │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj] > │ > │ 00:00:21 d #34 > runtime.execute_with_options_async / { > │ > exit_code = 1; output_length = 451; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:18 c #5 buildCode / code: 1 + > a |> ignore / > │ > fsprojText: <Project Sdk="Microsoft.NET.Sdk"> > │ > │ <PropertyGroup> > │ > │ > <TargetFramework>net9.0</TargetFramework> > │ > │ > <LangVersion>preview</LangVersion> > │ > │ <RollForward>Major</RollForward> > │ > │ > │ > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ > │ > │ > <ServerGarbageCollection>true</ServerGarbageCollection> > │ > │ > │ > > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ > │ <PublishAot>false</PublishAot> > │ > │ > <PublishTrimmed>false</PublishTrimmed> > │ > │ > <PublishSingleFile>true</PublishSingleFile> > │ > │ > <SelfContained>true</SelfContained> > │ > │ <Version>0.0.1-alpha.1</Version> > │ > │ <OutputType>Exe</OutputType> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> > │ > │ > <DefineConstants>_FREEBSD</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('Linux'))"> > │ > │ > <DefineConstants>_LINUX</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('OSX'))"> > │ > │ > <DefineConstants>_OSX</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('Windows'))"> > │ > │ > <DefineConstants>_WINDOWS</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <ItemGroup> > │ > │ > │ > │ <Compile > │ > > Include="c:\home\git\polyglot\target\Builder\test2\test2.fs" /> > │ > │ </ItemGroup> > │ > │ > │ > │ <ItemGroup> > │ > │ <FrameworkReference > │ > Include="Microsoft.AspNetCore.App" /> > │ > │ </ItemGroup> > │ > │ > │ > │ <Import > │ > Project="c:/home/git\polyglot/.paket/Paket.Restore.targets" > /> > │ > │ </Project> > │ > │ > │ > │ Some 2 > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## readFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline readFile path = async { > │ > let! code = path |> > SpiralFileSystem.read_all_text_async > │ > > │ > let code = System.Text.RegularExpressions.Regex.Replace > ( > │ > code, > │ > @"( *)(let\s+main\s+\w+\s*=)", > │ > fun m -> m.Groups.[[1]].Value + > "[[<EntryPoint>]]\n" + > │ > m.Groups.[[1]].Value + m.Groups.[[2]].Value > │ > ) > │ > > │ > let codeTrim = code |> SpiralSm.trim_end [[||]] > │ > return > │ > if codeTrim |> SpiralSm.ends_with "\n()" > │ > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> > String.length) - 3) > │ > else code > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildFile runtime packages modules path = async > { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let dir = fullPath |> System.IO.Path.GetDirectoryName > │ > let name = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> readFile > │ > return! code |> buildCode runtime packages modules (dir > </> "dist" |> Some) > │ > name > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## persistFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline persistFile packages modules path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let name = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> readFile > │ > return! code |> persistCodeProject packages modules > name None > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.ExactlyOnce>]] > │ > Path of path : string > │ > | [[<Argu.ArguAttributes.Unique>]] Packages of packages > : string list > │ > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : > string list > │ > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : > string > │ > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Path _ -> nameof Path > │ > | Packages _ -> nameof Packages > │ > | Modules _ -> nameof Modules > │ > | Runtime _ -> nameof Runtime > │ > | Persist_Only -> nameof Persist_Only > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 95.66ms - return value ] > ────────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] [--packages > [<packages>...]] > │ > │ [--modules > [<modules>...]] [--runtime > │ > <runtime>] > │ > │ [--persist-only] > <path> > │ > │ > │ > │ PATH: > │ > │ > │ > │ <path> Path > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --packages [<packages>...] > │ > │ Packages > │ > │ --modules [<modules>...] > │ > │ Modules > │ > │ --runtime <runtime> Runtime > │ > │ --persist-only Persist_Only > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let path = > │ > match argsMap.[[nameof Arguments.Path]] with > │ > | [[ Arguments.Path path ]] -> Some path > │ > | _ -> None > │ > |> Option.get > │ > > │ > let packages = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Packages) with > │ > | Some [[ Arguments.Packages packages ]] -> > packages > │ > | _ -> [[]] > │ > > │ > let modules = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Modules) with > │ > | Some [[ Arguments.Modules modules ]] -> modules > │ > | _ -> [[]] > │ > > │ > let runtime = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Runtime) with > │ > | Some [[ Arguments.Runtime runtime ]] -> Some > runtime > │ > | _ -> None > │ > > │ > let persistOnly = argsMap |> Map.containsKey (nameof > Arguments.Persist_Only) > │ > > │ > if persistOnly > │ > then path |> persistFile packages modules |> Async.map > (fun _ -> 0) > │ > else path |> buildFile runtime packages modules > │ > |> Async.runWithTimeout (60001 * 60 * 24) > │ > |> function > │ > | Some exitCode -> exitCode > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 29.92s - return value ] > ─────────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 29.92s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ 00:00:19 d #6 persistCodeProject / > packages: [Argu; > │ > FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: > │ > [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; > │ > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Builder / > hash: / code.Length: > │ > 8451 > │ > │ 00:00:19 d #7 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > │ > │ 00:00:22 d #35 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64"; > │ > options = { command = dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:23 v #36 > Determining > projects to restore... > │ > │ 00:00:23 v #37 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:23 v #38 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:23 v #39 > Total time > taken: 0 milliseconds > │ > │ 00:00:23 v #40 > Restored > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > (in 233 ms). > │ > │ 00:00:35 v #41 > Builder -> > │ > > c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\linux-x64\Builder > │ > .dll > │ > │ 00:00:37 v #42 > Builder -> > │ > C:\home\git\polyglot\apps\builder\dist\ > │ > │ 00:00:37 d #43 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 433; options = { command = > dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:37 d #44 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64"; > │ > options = { command = dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:37 v #45 > Determining > projects to restore... > │ > │ 00:00:38 v #46 > Paket version > │ > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ > │ 00:00:38 v #47 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:38 v #48 > Total time > taken: 0 milliseconds > │ > │ 00:00:38 v #49 > Restored > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > (in 226 ms). > │ > │ 00:00:50 v #50 > Builder -> > │ > > c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\win-x64\Builder.d > │ > ll > │ > │ 00:00:51 v #51 > Builder -> > │ > C:\home\git\polyglot\apps\builder\dist\ > │ > │ 00:00:52 d #52 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 431; options = { command = > dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ > │ 00:01:03 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 28638 } > │ 00:01:03 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:04 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/builder/Builder.dib.ipynb to html > │ 00:01:04 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:01:04 v #7 ! validate(nb) > │ 00:01:05 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:01:05 v #9 ! return _pygments_highlight( > │ 00:01:05 v #10 ! [NbConvertApp] Writing 337357 bytes to > c:\home\git\polyglot\apps\builder\Builder.dib.html > │ 00:01:05 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 860 } > │ 00:01:05 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 860 } > │ 00:01:05 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:06 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:01:06 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:01:06 d #16 spiral.run / dib / { exit_code = 0; > result_length = 29557 } > │ polyglot/apps/builder/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../deps/spiral/apps/spiral/build.ps1 -fast 1 -SkipFsx 1 } | Invoke-Block > > ── [ 58.53s - stdout ] ───────────────────────────────────────────────────────── > │ spiral/apps/spiral/build.ps1 / ScriptDir: > C:\home\git\polyglot\deps\spiral\apps\spiral / ResolvedScriptDir: > C:\home\git\spiral\apps\spiral > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > spiral / hash: / code.Length: 1541624 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps > /polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps > / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs > / Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @ThisFunctionalTom > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\spiral\spiral.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 147ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 14312ms > │ > │ .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ spiral/apps/spiral/build.ps1 / path: > C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs > │ spiral/apps/spiral/build.ps1 / $projectName: spiral / > $env:CI:'' > │ Compiling spiral v0.0.1 > (C:\home\git\spiral\apps\spiral) > │ error: failed to remove file > `C:\home\git\spiral\workspace\target\release\spiral.exe` > │ > │ Caused by: > │ Access is denied. (os error 5) > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: > '' / $ScriptBlock: > │ 'cargo build --release' > │ > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/parser/build.ps1 } | Invoke-Block > > ── [ 1.67m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "DibParser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/DibParser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/parser/DibParser.dib" --output-path > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # DibParser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > ls ~/.nuget/packages/argu > │ > > │ > ── [ 429.13ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ Directory: > C:\Users\i574n\.nuget\packages\argu > │ > │ > │ > │ Mode > LastWriteTime > │ > Length Name > │ > │ ---- > ------------- > │ > ------ ---- > │ > │ d---- 2023-05-17 3:38 PM│ > 6.1.1 > │ > │ d---- 2024-03-12 8:22 PM│ > 6.1.4 > │ > │ d---- 2024-01-29 5:12 PM│ > 6.1.5 > │ > │ d---- 2024-03-12 8:20 PM│ > 6.2.0 > │ > │ d---- 2024-02-23 6:50 PM│ > 6.2.1 > │ > │ d---- 2024-03-12 8:15 PM│ > 6.2.2 > │ > │ d---- 2024-05-14 8:20 PM│ > 6.2.3 > │ > │ d---- 2024-06-06 7:37 PM│ > 6.2.4 > │ > │ d---- 2024-12-08 11:22 AM│ > 6.2.5 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open FParsec > │ > open SpiralFileSystem.Operators > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## escapeCell (test) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let inline escapeCell input = > │ > input > │ > |> SpiralSm.split "\n" > │ > |> Array.map (function > │ > | line when line |> SpiralSm.starts_with "\\#!" || > line |> > │ > SpiralSm.starts_with "\\#r" -> > │ > System.Text.RegularExpressions.Regex.Replace > (line, "^\\\\#", "#") > │ > | line -> line > │ > ) > │ > |> SpiralSm.concat "\n" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > $"a{nl}\\#!magic{nl}b{nl}" > │ > |> escapeCell > │ > |> _assertEqual ( > │ > $"a{nl}#!magic{nl}b{nl}" > │ > ) > │ > > │ > ── [ 52.80ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "a > │ > │ #!magic > │ > │ b > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## magicMarker > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let magicMarker : Parser<string, unit> = pstring "#!" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic" > │ > |> run magicMarker > │ > |> _assertEqual ( > │ > Success ("#!", (), Position ("", 2, 1, 3)) > │ > ) > │ > > │ > ── [ 38.57ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "#!" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "##!magic" > │ > |> run magicMarker > │ > |> _assertEqual ( > │ > Failure ( > │ > $"Error in Ln: 1 Col: > 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > │ > ParserError ( > │ > Position ("", 0, 1, 1), > │ > (), > │ > ErrorMessageList (ExpectedString "#!") > │ > ), > │ > () > │ > ) > │ > ) > │ > > │ > ── [ 35.83ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure: > │ > │ Error in Ln: 1 Col: 1 > │ > │ ##!magic > │ > │ ^ > │ > │ Expecting: '#!' > │ > │ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## magicCommand > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let magicCommand = > │ > magicMarker > │ > >>. manyTill anyChar newline > │ > |>> (System.String.Concat >> SpiralSm.trim) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > a" > │ > |> run magicCommand > │ > |> _assertEqual ( > │ > Success ("magic", (), Position ("", 8, 2, 1)) > │ > ) > │ > > │ > ── [ 26.24ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "magic" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > " #!magic > │ > > │ > a" > │ > |> run magicCommand > │ > |> _assertEqual ( > │ > Failure ( > │ > $"Error in Ln: 1 Col: 1{nl} > #!magic{nl}^{nl}Expecting: '#!'{nl}", > │ > ParserError ( > │ > Position ("", 0, 1, 1), > │ > (), > │ > ErrorMessageList (ExpectedString "#!") > │ > ), > │ > () > │ > ) > │ > ) > │ > > │ > ── [ 26.27ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure: > │ > │ Error in Ln: 1 Col: 1 > │ > │ #!magic > │ > │ ^ > │ > │ Expecting: '#!' > │ > │ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## content > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let content = > │ > (newline >>. magicMarker) <|> (eof >>. preturn "") > │ > |> attempt > │ > |> lookAhead > │ > |> manyTill anyChar > │ > |>> (System.String.Concat >> SpiralSm.trim) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > > │ > a > │ > > │ > > │ > " > │ > |> run content > │ > |> _assertEqual ( > │ > Success ("#!magic > │ > > │ > > │ > a", (), Position ("", 14, 7, 1)) > │ > ) > │ > > │ > ── [ 23.14ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "#!magic > │ > │ > │ > │ > │ > │ a" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Output > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Output = > │ > | Fs > │ > | Md > │ > | Spi > │ > | Spir > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Magic > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Magic = > │ > | Fsharp > │ > | Markdown > │ > | Spiral of Output > │ > | Magic of string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## kernelOutputs > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline kernelOutputs magic = > │ > match magic with > │ > | Fsharp -> [[ Fs ]] > │ > | Markdown -> [[ Md ]] > │ > | Spiral output -> [[ output ]] > │ > | _ -> [[]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Block > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Block = > │ > { > │ > magic : Magic > │ > content : string > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## block > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let block = > │ > pipe2 > │ > magicCommand > │ > content > │ > (fun magic content -> > │ > let magic, content = > │ > match magic with > │ > | "fsharp" -> Fsharp, content > │ > | "markdown" -> Markdown, content > │ > | "spiral" -> > │ > let output = if content |> > SpiralSm.contains "//// real\n" > │ > then Spir else Spi > │ > let content = > │ > if output = Spi > │ > then content > │ > else > │ > content > │ > |> SpiralSm.replace "//// > real\n\n" "" > │ > |> SpiralSm.replace "//// > real\n" "" > │ > Spiral output, content > │ > | magic -> magic |> Magic, content > │ > { > │ > magic = magic > │ > content = content > │ > }) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > > │ > a > │ > > │ > > │ > " > │ > |> run block > │ > |> _assertEqual ( > │ > Success ( > │ > { magic = Magic "magic"; content = "a" }, > │ > (), > │ > Position ("", 14, 7, 1) > │ > ) > │ > ) > │ > > │ > ── [ 39.96ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: { magic = Magic "magic" > │ > │ content = "a" } > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## blocks > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let blocks = > │ > skipMany newline > │ > >>. sepEndBy block (skipMany1 newline) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > > │ > "#!magic1 > │ > > │ > a > │ > > │ > \#!magic2 > │ > > │ > b > │ > > │ > " > │ > |> escapeCell > │ > |> run blocks > │ > |> _assertEqual ( > │ > Success ( > │ > [[ > │ > { magic = Magic "magic1"; content = "a" } > │ > { magic = Magic "magic2"; content = "b" } > │ > ]], > │ > (), > │ > Position ("", 26, 9, 1) > │ > ) > │ > ) > │ > > │ > ── [ 51.15ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: [{ magic = Magic "magic1" > │ > │ content = "a" }; { magic = Magic > "magic2" > │ > │ content = "b" }] > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## formatBlock > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline formatBlock output (block : Block) = > │ > match output, block with > │ > | output, { magic = Markdown; content = content } -> > │ > let markdownComment = > │ > match output with > │ > | Spi | Spir -> "/// " > │ > | Fs -> "/// " > │ > | _ -> "" > │ > content > │ > |> SpiralSm.split "\n" > │ > |> Array.map (SpiralSm.trim_end [[||]]) > │ > |> Array.filter (SpiralSm.ends_with " (test)" >> > not) > │ > |> Array.map (function > │ > | "" -> markdownComment > │ > | line -> > System.Text.RegularExpressions.Regex.Replace (line, > │ > "^\\s*", $"$&{markdownComment}") > │ > ) > │ > |> SpiralSm.concat "\n" > │ > | Fs, { magic = Fsharp; content = content } -> > │ > let trimmedContent = content |> SpiralSm.trim > │ > if trimmedContent |> SpiralSm.contains "//// > test\n" > │ > || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ > then "" > │ > else > │ > content > │ > |> SpiralSm.split "\n" > │ > |> Array.filter (SpiralSm.trim_start [[||]] >> > SpiralSm.starts_with > │ > "#r" >> not) > │ > |> SpiralSm.concat "\n" > │ > | (Spi | Spir), { magic = Spiral output'; content = > content } when output' = > │ > output -> > │ > let trimmedContent = content |> SpiralSm.trim > │ > if trimmedContent |> SpiralSm.contains "//// > test\n" > │ > || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ > then "" > │ > else content > │ > | _ -> "" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!markdown > │ > > │ > > │ > a > │ > > │ > b > │ > > │ > c > │ > > │ > > │ > \#!markdown > │ > > │ > > │ > c > │ > > │ > > │ > \#!fsharp > │ > > │ > > │ > let a = 1" > │ > |> escapeCell > │ > |> run block > │ > |> function > │ > | Success (block, _, _) -> formatBlock Fs block > │ > | Failure (msg, _, _) -> failwith msg > │ > |> _assertEqual "/// a > │ > /// > │ > /// b > │ > /// > │ > /// c" > │ > > │ > ── [ 51.98ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "/// a > │ > │ /// > │ > │ /// b > │ > │ /// > │ > │ /// c" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## formatBlocks > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline formatBlocks output blocks = > │ > blocks > │ > |> List.map (fun block -> > │ > block, formatBlock output block > │ > ) > │ > |> List.filter (snd >> (<>) "") > │ > |> fun list -> > │ > (list, (None, [[]])) > │ > ||> List.foldBack (fun (block, content) (lastMagic, > acc) -> > │ > let lineBreak = > │ > if block.magic = Markdown && lastMagic <> > Some Markdown && > │ > lastMagic <> None > │ > then "" > │ > else "\n" > │ > Some block.magic, $"{content}{lineBreak}" :: > acc > │ > ) > │ > |> snd > │ > |> SpiralSm.concat "\n" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!markdown > │ > > │ > > │ > a > │ > > │ > b > │ > > │ > > │ > \#!markdown > │ > > │ > > │ > c > │ > > │ > > │ > \#!fsharp > │ > > │ > > │ > let a = 1 > │ > > │ > \#!markdown > │ > > │ > d (test) > │ > > │ > \#!fsharp > │ > > │ > //// test > │ > > │ > let a = 2 > │ > > │ > \#!markdown > │ > > │ > e > │ > > │ > \#!fsharp > │ > > │ > let a = 3" > │ > |> escapeCell > │ > |> run blocks > │ > |> function > │ > | Success (blocks, _, _) -> formatBlocks Fs blocks > │ > | Failure (msg, _, _) -> failwith msg > │ > |> _assertEqual "/// a > │ > /// > │ > /// b > │ > > │ > /// c > │ > let a = 1 > │ > > │ > /// e > │ > let a = 3 > │ > " > │ > > │ > ── [ 69.88ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "/// a > │ > │ /// > │ > │ /// b > │ > │ > │ > │ /// c > │ > │ let a = 1 > │ > │ > │ > │ /// e > │ > │ let a = 3 > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## parse > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parse output input = > │ > match run blocks input with > │ > | Success (blocks, _, _) -> > │ > let blocks = > │ > blocks > │ > |> List.filter (fun block -> > │ > block.magic |> kernelOutputs |> > List.contains output || > │ > block.magic = Markdown > │ > ) > │ > > │ > match blocks with > │ > | { magic = Markdown; content = content } :: _ > │ > when output = Fs > │ > && content |> SpiralSm.starts_with "# " > │ > && content |> SpiralSm.ends_with ")" > │ > -> > │ > let inline indentBlock (block : Block) = > │ > { block with > │ > content = > │ > block.content > │ > |> SpiralSm.split "\n" > │ > |> Array.fold > │ > (fun (lines, isMultiline) line > -> > │ > let trimmedLine = line |> > SpiralSm.trim > │ > if trimmedLine = "" > │ > then "" :: lines, > isMultiline > │ > else > │ > let inline > singleQuoteLine () = > │ > trimmedLine |> > Seq.sumBy ((=) '"' >> > │ > System.Convert.ToInt32) = 1 > │ > && trimmedLine |> > SpiralSm.contains > │ > @"'""'" |> not > │ > && trimmedLine |> > SpiralSm.ends_with "{" > │ > |> not > │ > && trimmedLine |> > SpiralSm.ends_with > │ > "{|" |> not > │ > && trimmedLine |> > SpiralSm.starts_with > │ > "}" |> not > │ > && trimmedLine |> > SpiralSm.starts_with > │ > "|}" |> not > │ > > │ > match isMultiline, > trimmedLine |> > │ > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > │ > | false, [[| _; _ |]] > -> > │ > $" {line}" :: > lines, true > │ > > │ > | true, [[| _; _ |]] -> > │ > line :: lines, > false > │ > > │ > | false, _ when > singleQuoteLine () -> > │ > $" {line}" :: > lines, true > │ > > │ > | false, _ when line |> > SpiralSm.starts_with > │ > "#" && block.magic = Fsharp -> > │ > line :: lines, > false > │ > > │ > | false, _ -> > │ > $" {line}" :: > lines, false > │ > > │ > | true, _ when > singleQuoteLine () && line |> > │ > SpiralSm.starts_with " " -> > │ > $" {line}" :: > lines, false > │ > > │ > | true, _ when > singleQuoteLine () -> > │ > line :: lines, > false > │ > > │ > | true, _ -> > │ > line :: lines, true > │ > ) > │ > ([[]], false) > │ > |> fst > │ > |> List.rev > │ > |> SpiralSm.concat "\n" > │ > } > │ > > │ > let moduleName, namespaceName = > │ > System.Text.RegularExpressions.Regex.Match > (content, @"# (.*) > │ > \((.*)\)$") > │ > |> fun m -> m.Groups.[[1]].Value, > m.Groups.[[2]].Value > │ > > │ > let moduleBlock = > │ > { > │ > magic = Fsharp > │ > content = > │ > $"#if !INTERACTIVE > │ > namespace {namespaceName} > │ > #endif > │ > > │ > module {moduleName} =" > │ > } > │ > > │ > blocks > │ > |> List.indexed > │ > |> List.fold > │ > (fun blocks (index, block) -> > │ > match index with > │ > | 0 -> blocks > │ > | 1 -> indentBlock block :: moduleBlock > :: blocks > │ > | _ -> indentBlock block :: blocks > │ > ) > │ > [[]] > │ > |> List.rev > │ > | _ -> blocks > │ > |> Result.Ok > │ > | Failure (errorMsg, _, _) -> Result.Error errorMsg > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example1 = > │ > $"""#!meta > │ > > │ > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > │ > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > │ > > │ > \#!markdown > │ > > │ > # TestModule (TestNamespace) > │ > > │ > \#!fsharp > │ > > │ > \#!import file.dib > │ > > │ > \#!fsharp > │ > > │ > \#r "nuget:Expecto" > │ > > │ > \#!markdown > │ > > │ > ## ParserLibrary > │ > > │ > \#!fsharp > │ > > │ > open System > │ > > │ > \#!markdown > │ > > │ > ## x (test) > │ > > │ > \#!fsharp > │ > > │ > //// ignore > │ > > │ > let x = 1 > │ > > │ > \#!spiral > │ > > │ > //// test > │ > > │ > inl x = 1i32 > │ > > │ > \#!spiral > │ > > │ > //// real > │ > > │ > inl x = 2i32 > │ > > │ > \#!spiral > │ > > │ > inl x = 3i32 > │ > > │ > \#!markdown > │ > > │ > ### TextInput > │ > > │ > \#!fsharp > │ > > │ > let str1 = "abc > │ > def" > │ > > │ > let str2 = > │ > "abc\ > │ > def" > │ > > │ > let str3 = > │ > $"1{{ > │ > 1 > │ > }}1" > │ > > │ > let str4 = > │ > $"1{{({{| > │ > a = 1 > │ > |}}).a}}1" > │ > > │ > let str5 = > │ > "abc \ > │ > def" > │ > > │ > let x = > │ > match '"' with > │ > | '"' -> true > │ > | _ -> false > │ > > │ > let long1 = {q}{q}{q}a{q}{q}{q} > │ > > │ > let long2 = > │ > {q}{q}{q} > │ > a > │ > {q}{q}{q} > │ > > │ > \#!fsharp > │ > > │ > type Position = > │ > {{ > │ > #if INTERACTIVE > │ > line : string > │ > #else > │ > line : int > │ > #endif > │ > column : int > │ > }}""" > │ > |> escapeCell > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Fs > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Fs) > │ > |> _assertEqual $"""#if !INTERACTIVE > │ > namespace TestNamespace > │ > #endif > │ > > │ > module TestModule = > │ > > │ > /// ## ParserLibrary > │ > open System > │ > > │ > /// ### TextInput > │ > let str1 = "abc > │ > def" > │ > > │ > let str2 = > │ > "abc\ > │ > def" > │ > > │ > let str3 = > │ > $"1{{ > │ > 1 > │ > }}1" > │ > > │ > let str4 = > │ > $"1{{({{| > │ > a = 1 > │ > |}}).a}}1" > │ > > │ > let str5 = > │ > "abc \ > │ > def" > │ > > │ > let x = > │ > match '"' with > │ > | '"' -> true > │ > | _ -> false > │ > > │ > let long1 = {q}{q}{q}a{q}{q}{q} > │ > > │ > let long2 = > │ > {q}{q}{q} > │ > a > │ > {q}{q}{q} > │ > > │ > type Position = > │ > {{ > │ > #if INTERACTIVE > │ > line : string > │ > #else > │ > line : int > │ > #endif > │ > column : int > │ > }} > │ > """ > │ > > │ > ── [ 180.01ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "#if !INTERACTIVE > │ > │ namespace TestNamespace > │ > │ #endif > │ > │ > │ > │ module TestModule = > │ > │ > │ > │ /// ## ParserLibrary > │ > │ open System > │ > │ > │ > │ /// ### TextInput > │ > │ let str1 = "abc > │ > │ def" > │ > │ > │ > │ let str2 = > │ > │ "abc\ > │ > │ def" > │ > │ > │ > │ let str3 = > │ > │ $"1{ > │ > │ 1 > │ > │ }1" > │ > │ > │ > │ let str4 = > │ > │ $"1{({| > │ > │ a = 1 > │ > │ |}).a}1" > │ > │ > │ > │ let str5 = > │ > │ "abc \ > │ > │ def" > │ > │ > │ > │ let x = > │ > │ match '"' with > │ > │ | '"' -> true > │ > │ | _ -> false > │ > │ > │ > │ let long1 = """a""" > │ > │ > │ > │ let long2 = > │ > │ """ > │ > │ a > │ > │ """ > │ > │ > │ > │ type Position = > │ > │ { > │ > │ #if INTERACTIVE > │ > │ line : string > │ > │ #else > │ > │ line : int > │ > │ #endif > │ > │ column : int > │ > │ } > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Md > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Md) > │ > |> _assertEqual "# TestModule (TestNamespace) > │ > > │ > ## ParserLibrary > │ > > │ > ### TextInput > │ > " > │ > > │ > ── [ 162.02ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "# TestModule (TestNamespace) > │ > │ > │ > │ ## ParserLibrary > │ > │ > │ > │ ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Spi > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Spi) > │ > |> _assertEqual "/// # TestModule (TestNamespace) > │ > > │ > /// ## ParserLibrary > │ > inl x = 3i32 > │ > > │ > /// ### TextInput > │ > " > │ > > │ > ── [ 165.09ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "/// # TestModule (TestNamespace) > │ > │ > │ > │ /// ## ParserLibrary > │ > │ inl x = 3i32 > │ > │ > │ > │ /// ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Spir > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Spir) > │ > |> _assertEqual "/// # TestModule (TestNamespace) > │ > > │ > /// ## ParserLibrary > │ > inl x = 2i32 > │ > > │ > /// ### TextInput > │ > " > │ > > │ > ── [ 164.84ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "/// # TestModule (TestNamespace) > │ > │ > │ > │ /// ## ParserLibrary > │ > │ inl x = 2i32 > │ > │ > │ > │ /// ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## parseDibCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parseDibCode output file = async { > │ > trace Debug > │ > (fun () -> "parseDibCode") > │ > (fun () -> $"output: {output} / file: {file} / > {_locals ()}") > │ > let! input = file |> > SpiralFileSystem.read_all_text_async > │ > match parse output input with > │ > | Result.Ok blocks -> return blocks |> formatBlocks > output > │ > | Result.Error msg -> return failwith msg > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## writeDibCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline writeDibCode output path = async { > │ > trace Debug > │ > (fun () -> "writeDibCode") > │ > (fun () -> $"output: {output} / path: {path} / > {_locals ()}") > │ > let! result = parseDibCode output path > │ > let pathDir = path |> System.IO.Path.GetDirectoryName > │ > let fileNameWithoutExt = > │ > match output, path |> > System.IO.Path.GetFileNameWithoutExtension with > │ > | Spir, fileNameWithoutExt -> > $"{fileNameWithoutExt}_real" > │ > | _, fileNameWithoutExt -> fileNameWithoutExt > │ > let outputPath = pathDir </> > $"{fileNameWithoutExt}.{output |> string |> > │ > SpiralSm.to_lower}" > │ > do! result |> SpiralFileSystem.write_all_text_async > outputPath > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.Mandatory>]] > │ > File of file : string * Output > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | File _ -> nameof File > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 82.27ms - return value ] > ────────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] <file> > <fs|md|spi|spir> > │ > │ > │ > │ FILE: > │ > │ > │ > │ <file> <fs|md|spi|spir> > │ > │ File > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let files = > │ > argsMap.[[nameof Arguments.File]] > │ > |> List.map (function > │ > | Arguments.File (path, output) -> path, output > │ > ) > │ > > │ > files > │ > |> List.map (fun (path, output) -> path |> writeDibCode > output) > │ > |> Async.Parallel > │ > |> Async.Ignore > │ > |> Async.runWithTimeout 30000 > │ > |> function > │ > | Some () -> 0 > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 151.49ms - return value ] > ───────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 152.17ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:00:05 d #1 writeDibCode / > output: Fs / path: > │ > DibParser.dib > │ > │ 00:00:05 d #2 parseDibCode / > output: Fs / file: > │ > DibParser.dib > │ > │ > │ 00:00:20 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 29954 } > │ 00:00:20 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:21 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb to html > │ 00:00:21 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:21 v #7 ! validate(nb) > │ 00:00:22 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:22 v #9 ! return _pygments_highlight( > │ 00:00:22 v #10 ! [NbConvertApp] Writing 378895 bytes to > c:\home\git\polyglot\apps\parser\DibParser.dib.html > │ 00:00:22 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 862 } > │ 00:00:22 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 862 } > │ 00:00:22 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:23 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:23 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:23 d #16 spiral.run / dib / { exit_code = 0; > result_length = 30875 } > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > FParsec; FSharp.Control.AsyncSeq; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / > code.Length: 10861 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Restored > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 225 ms). > │ 00:00:14 v #7 > DibParser -> > c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\linux-x64\DibPa > rser.dll > │ 00:00:15 v #8 > DibParser -> > C:\home\git\polyglot\apps\parser\dist\ > │ 00:00:15 d #9 runtime.execute_with_options_async / { > exit_code = 0; output_length = 444; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:15 d #10 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:16 v #11 > Determining projects to restore... > │ 00:00:16 v #12 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:16 v #13 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:16 v #14 > Total time taken: 0 milliseconds > │ 00:00:17 v #15 > Restored > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 225 ms). > │ 00:00:29 v #16 > DibParser -> > c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\win-x64\DibPars > er.dll > │ 00:00:30 v #17 > DibParser -> > C:\home\git\polyglot\apps\parser\dist\ > │ 00:00:31 d #18 runtime.execute_with_options_async / { > exit_code = 0; output_length = 442; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "JsonParser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/JsonParser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/parser/JsonParser.dib" --output-path > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # JsonParser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open Parser > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## JsonParser > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > (* > │ > // -------------------------------- > │ > JSON spec from http://www.json.org/ > │ > // -------------------------------- > │ > > │ > The JSON spec is available at > [[json.org]](http://www.json.org/). I'll paraphase > │ > it here: > │ > > │ > * A `value` can be a `string` or a `number` or a `bool` or > `null` or an `object` > │ > or an `array`. > │ > * These structures can be nested. > │ > * A `string` is a sequence of zero or more Unicode > characters, wrapped in double > │ > quotes, using backslash escapes. > │ > * A `number` is very much like a C or Java number, except > that the octal and > │ > hexadecimal formats are not used. > │ > * A `boolean` is the literal `true` or `false` > │ > * A `null` is the literal `null` > │ > * An `object` is an unordered set of name/value pairs. > │ > * An object begins with { (left brace) and ends with } > (right brace). > │ > * Each name is followed by : (colon) and the name/value > pairs are separated by > │ > , (comma). > │ > * An `array` is an ordered collection of values. > │ > * An array begins with [[ (left bracket) and ends with ]] > (right bracket). > │ > * Values are separated by , (comma). > │ > * Whitespace can be inserted between any pair of tokens. > │ > *) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let inline parserEqual (expected : ParseResult<'a>) (actual > : ParseResult<'a * > │ > Input>) = > │ > match actual, expected with > │ > | Success (_actual, _), Success _expected -> > │ > printResult actual > │ > _actual |> _assertEqual _expected > │ > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = > l2 && e1 = e2 && p1 = > │ > p2 -> > │ > printResult actual > │ > | _ -> > │ > printfn $"Actual: {actual}" > │ > printfn $"Expected: {expected}" > │ > failwith "Parse failed" > │ > actual > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### JValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type JValue = > │ > | JString of string > │ > | JNumber of float > │ > | JBool of bool > │ > | JNull > │ > | JObject of Map<string, JValue> > │ > | JArray of JValue list > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jValue, jValueRef = createParserForwardedToRef<JValue> > () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jNull > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jNull = > │ > pstring "null" > │ > >>% JNull > │ > <?> "null" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jValue "null" > │ > |> parserEqual (Success JNull) > │ > > │ > ── [ 176.71ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNull, { lines = > [|"null"|]<br /> > │ > position = { line = 0<br /> > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNull, { lines = > [|"null"|]<br /> > │ > position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > > class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr> > │ > > </tr></thead><tbody></tbody></table></div></details></td></tr><tr><td>Item2</td> > │ > <td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"null"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ null > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 187.25ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JNull > │ > │ JNull > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNull "nulp" > │ > |> parserEqual ( > │ > Failure ( > │ > "null", > │ > "Unexpected 'p'", > │ > { currentLine = "nulp"; line = 0; column = 3 } > │ > ) > │ > ) > │ > > │ > ── [ 50.63ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("null", > "Unexpected > │ > 'p'", { currentLine = "nulp"<br /> > │ > line = 0<br /> column = > 3 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"null" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 'p'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "nulp"<br /> line = 0<br /> column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"nulp" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 51.93ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:3 Error parsing null > │ > │ nulp > │ > │ ^Unexpected 'p' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jBool > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jBool = > │ > let jtrue = > │ > pstring "true" > │ > >>% JBool true > │ > let jfalse = > │ > pstring "false" > │ > >>% JBool false > │ > > │ > jtrue <|> jfalse > │ > <?> "bool" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "true" > │ > |> parserEqual (Success (JBool true)) > │ > > │ > ── [ 48.10ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JBool true, { lines = > │ > [|"true"|]<br /> position = > { line = 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JBool true, { lines = > [|"true"|]<br /> > │ > position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JBool > │ > > true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > tem</td><td><div class="dni-plaintext"><pre>true > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"true"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ true > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 49.94ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JBool true > │ > │ JBool true > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "false" > │ > |> parserEqual (Success (JBool false)) > │ > > │ > ── [ 38.68ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JBool false, { lines =│ > [|"false"|]<br /> position > = { line = 0<br /> > │ > column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JBool false, { lines = > [|"false"|]<br /> > │ > position = { line = 0<br /> column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JBool > │ > > false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>false > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"false"|]<br /> position = { line = > 0<br /> > │ > column = 5 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ false > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 5 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>5 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.37ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JBool false > │ > │ JBool false > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "truX" > │ > |> parserEqual ( > │ > Failure ( > │ > "bool", > │ > "Unexpected 't'", > │ > { currentLine = "truX"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 34.68ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("bool", > "Unexpected > │ > 't'", { currentLine = "truX"<br /> > │ > line = 0<br /> column = > 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"bool" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 't'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "truX"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"truX" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 35.95ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing bool > │ > │ truX > │ > │ ^Unexpected 't' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jUnescapedChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jUnescapedChar = > │ > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnescapedChar "a" > │ > |> parserEqual (Success 'a') > │ > > │ > ── [ 51.63ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('a', { lines = > [|"a"|]<br > │ > /> position = { line = 0<br /> > column > │ > = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(a, { lines = > [|"a"|]<br /> position = { > │ > line = 0<br /> column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'a' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"a"|]<br /> position = { line = 0<br /> > column = 1 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ a > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 53.23ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ 'a' > │ > │ 'a' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnescapedChar "\\" > │ > |> parserEqual ( > │ > Failure ( > │ > "char", > │ > "Unexpected '\\'", > │ > { currentLine = "\\"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 41.42ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("char", > "Unexpected > │ > '\'", { currentLine = "\"<br /> > │ > line = 0<br /> column = > 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"char" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '\'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "\"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"\" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 42.74ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing char > │ > │ \ > │ > │ ^Unexpected '\' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jEscapedChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jEscapedChar = > │ > [[ > │ > ("\\\"",'\"') > │ > ("\\\\",'\\') > │ > ("\\/",'/') > │ > ("\\b",'\b') > │ > ("\\f",'\f') > │ > ("\\n",'\n') > │ > ("\\r",'\r') > │ > ("\\t",'\t') > │ > ]] > │ > |> List.map (fun (toMatch, result) -> > │ > pstring toMatch >>% result > │ > ) > │ > |> choice > │ > <?> "escaped char" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "\\\\" > │ > |> parserEqual (Success '\\') > │ > > │ > ── [ 38.34ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\\', { lines > = > │ > [|"\\"|]<br /> position = { line > = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(\, { lines = > [|"\\"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \\ > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.41ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\\' > │ > │ '\\' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "\\t" > │ > |> parserEqual (Success '\t') > │ > > │ > ── [ 38.12ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\009', { > lines = > │ > [|"\t"|]<br /> position = { > line = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>( , { lines = > [|"\t"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\009' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\t"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \t > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 39.76ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\009' > │ > │ '\009' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar @"\\" > │ > |> parserEqual (Success '\\') > │ > > │ > ── [ 36.24ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\\', { lines > = > │ > [|"\\"|]<br /> position = { line > = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(\, { lines = > [|"\\"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \\ > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.83ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\\' > │ > │ '\\' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar @"\n" > │ > |> parserEqual (Success '\n') > │ > > │ > ── [ 36.38ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\010', { > lines = [|"<br > │ > />"|]<br /> position = { line = 0<br > /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(<br />, { lines = [|"<br > />"|]<br /> > │ > position = { line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\010' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"<br />"|]<br /> position = { line = 0<br /> > column = > │ > 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ <br /> > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.97ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\010' > │ > │ '\010' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "a" > │ > |> parserEqual ( > │ > Failure ( > │ > "escaped char", > │ > "Unexpected 'a'", > │ > { currentLine = "a"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 35.94ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("escaped > char", "Unexpected > │ > 'a'", { currentLine = "a"<br /> > │ > line = 0<br /> > column = 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"escaped > char" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 'a'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "a"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"a" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.25ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing escaped char > │ > │ a > │ > │ ^Unexpected 'a' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jUnicodeChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jUnicodeChar = > │ > let backslash = pchar '\\' > │ > let uChar = pchar 'u' > │ > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' > ]] @ [[ 'a' .. 'f' > │ > ]]) > │ > let fourHexDigits = hexdigit .>>. hexdigit .>>. > hexdigit .>>. hexdigit > │ > > │ > let inline convertToChar (((h1, h2), h3), h4) = > │ > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > │ > Int32.Parse (str, > Globalization.NumberStyles.HexNumber) |> char > │ > > │ > backslash >>. uChar >>. fourHexDigits > │ > |>> convertToChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnicodeChar "\\u263A" > │ > |> parserEqual (Success '☺') > │ > > │ > ── [ 44.41ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('☺', { lines =│ > [|"\u263A"|]<br /> position = { > line = 0<br /> > │ > column = 6 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(☺, { lines = > [|"\u263A"|]<br /> position > │ > = { line = 0<br /> column = 6 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'☺' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\u263A"|]<br /> position = { line = 0<br /> > column = > │ > 6 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \u263A > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 6 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>6 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 45.96ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '☺' > │ > │ '☺' > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jString > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let quotedString = > │ > let quote = pchar '\"' <?> "quote" > │ > let jchar = jUnescapedChar <|> jEscapedChar <|> > jUnicodeChar > │ > > │ > quote >>. manyChars jchar .>> quote > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jString = > │ > quotedString > │ > |>> JString > │ > <?> "quoted string" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"\"" > │ > |> parserEqual (Success (JString "")) > │ > > │ > ── [ 47.96ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "", > { lines = > │ > [|""""|]<br /> > position = { line = > │ > 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "", { lines > = > │ > [|""""|]<br /> position = { line = > 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > ""</code></span></summary><div><table><thead><tr></tr></thead><tbody>< > │ > tr><td>Item</td><td><div > class="dni-plaintext"><pre>"" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""""|]<br /> position = { > line = 0<br /> > │ > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 49.68ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "" > │ > │ JString "" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"a\"" > │ > |> parserEqual (Success (JString "a")) > │ > > │ > ── [ 39.33ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "a", > { lines = > │ > [|""a""|]<br /> > position = { line = > │ > 0<br /> column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "a", { lines > = > │ > [|""a""|]<br /> position = { line = > 0<br /> > │ > column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "a"</code></span></summary><div><table><thead><tr></tr></thead><tbody> > │ > <tr><td>Item</td><td><div > class="dni-plaintext"><pre>"a" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""a""|]<br /> position = { > line = 0<br /> > │ > column = 3 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "a" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.95ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "a" > │ > │ JString "a" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\"" > │ > |> parserEqual (Success (JString "ab")) > │ > > │ > ── [ 39.35ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString > "ab", { lines = > │ > [|""ab""|]<br /> > position = { line = > │ > 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab", { > lines = > │ > [|""ab""|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "ab"</code></span></summary><div><table><thead><tr></tr></thead><tbody > │ > ><tr><td>Item</td><td><div > class="dni-plaintext"><pre>"ab" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab""|]<br /> position = { > line = 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "ab" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.96ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab" > │ > │ JString "ab" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\\tde\"" > │ > |> parserEqual (Success (JString "ab\tde")) > │ > > │ > ── [ 38.81ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "ab > de", { lines = > │ > [|""ab\tde""|]<br /> > position = { > │ > line = 0<br /> > column = 8 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab de", { > lines = > │ > [|""ab\tde""|]<br /> position = { line > = 0<br /> > │ > column = 8 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString "ab > │ > > de"</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > │ > td>Item</td><td><div class="dni-plaintext"><pre>"ab > de" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab\tde""|]<br /> position > = { line = 0<br /> > │ > column = 8 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ > "ab\tde" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 8 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>8 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.50ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab de" > │ > │ JString "ab de" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\\u263Ade\"" > │ > |> parserEqual (Success (JString "ab☺de")) > │ > > │ > ── [ 39.56ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString > "ab☺de", { lines = > │ > [|""ab\u263Ade""|]<br /> > position > │ > = { line = 0<br /> > column = 12 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab☺de", { > lines = > │ > [|""ab\u263Ade""|]<br /> position = { > line = 0<br /> > │ > column = 12 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead><tb > │ > ody><tr><td>Item</td><td><div > class="dni-plaintext"><pre>"ab☺de" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab\u263Ade""|]<br /> > position = { line = 0<br > │ > /> column = 12 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ > "ab\u263Ade" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 12 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>12 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 41.39ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab☺de" > │ > │ JString "ab☺de" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jNumber > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jNumber = > │ > let optSign = opt (pchar '-') > │ > > │ > let zero = pstring "0" > │ > > │ > let digitOneNine = > │ > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') > "1-9" > │ > > │ > let digit = > │ > satisfy Char.IsDigit "digit" > │ > > │ > let point = pchar '.' > │ > > │ > let e = pchar 'e' <|> pchar 'E' > │ > > │ > let optPlusMinus = opt (pchar '-' <|> pchar '+') > │ > > │ > let nonZeroInt = > │ > digitOneNine .>>. manyChars digit > │ > |>> fun (first, rest) -> string first + rest > │ > > │ > let intPart = zero <|> nonZeroInt > │ > > │ > let fractionPart = point >>. manyChars1 digit > │ > > │ > let exponentPart = e >>. optPlusMinus .>>. manyChars1 > digit > │ > > │ > let inline (|>?) opt f = > │ > match opt with > │ > | None -> "" > │ > | Some x -> f x > │ > > │ > let inline convertToJNumber (((optSign, intPart), > fractionPart), expPart) = > │ > let signStr = > │ > optSign > │ > |>? string > │ > > │ > let fractionPartStr = > │ > fractionPart > │ > |>? (fun digits -> "." + digits) > │ > > │ > let expPartStr = > │ > expPart > │ > |>? fun (optSign, digits) -> > │ > let sign = optSign |>? string > │ > "e" + sign + digits > │ > > │ > (signStr + intPart + fractionPartStr + expPartStr) > │ > |> float > │ > |> JNumber > │ > > │ > optSign .>>. intPart .>>. opt fractionPart .>>. opt > exponentPart > │ > |>> convertToJNumber > │ > <?> "number" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "123" > │ > |> parserEqual (Success (JNumber 123.0)) > │ > > │ > ── [ 59.85ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines > = > │ > [|"123"|]<br /> position > = { line = 0<br /> > │ > column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = > [|"123"|]<br /> > │ > position = { line = 0<br /> column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123"|]<br /> position = { line = 0<br > /> > │ > column = 3 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 61.35ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.0 > │ > │ JNumber 123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "-123" > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 40.00ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123"|]<br /> > position = { line = 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123"|]<br > │ > /> position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 41.45ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "123.4" > │ > |> parserEqual (Success (JNumber 123.4)) > │ > > │ > ── [ 41.52ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines > = > │ > [|"123.4"|]<br /> > position = { line = 0<br /> > │ > column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = > [|"123.4"|]<br > │ > /> position = { line = 0<br /> column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4"|]<br /> position = { line = > 0<br /> > │ > column = 5 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 5 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>5 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 42.99ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.4 > │ > │ JNumber 123.4 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "-123." > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 40.19ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123."|]<br /> > position = { line = 0<br > │ > /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123."|]<br > │ > /> position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123."|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123. > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 41.65ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "00.1" > │ > |> parserEqual (Success (JNumber 0.0)) > │ > > │ > ── [ 39.28ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 0.0, { lines =│ > [|"00.1"|]<br /> position > = { line = 0<br /> > │ > column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 0.0, { lines = > [|"00.1"|]<br /> > │ > position = { line = 0<br /> column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>0.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"00.1"|]<br /> position = { line = > 0<br /> > │ > column = 1 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 00.1 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.84ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 0.0 > │ > │ JNumber 0.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let jNumber_ = jNumber .>> spaces1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123" > │ > |> parserEqual (Success (JNumber 123.0)) > │ > > │ > ── [ 42.24ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines > = > │ > [|"123"|]<br /> position > = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = > [|"123"|]<br /> > │ > position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123"|]<br /> position = { line = 1<br > /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 43.79ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.0 > │ > │ JNumber 123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "-123" > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 40.83ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123"|]<br /> > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123"|]<br > │ > /> position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 42.30ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "-123." > │ > |> parserEqual ( > │ > Failure ( > │ > "number andThen many1 whitespace", > │ > "Unexpected '.'", > │ > { currentLine = "-123."; line = 0; column = 4 } > │ > ) > │ > ) > │ > > │ > ── [ 37.34ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure<br /> ("number > andThen many1 > │ > whitespace", "Unexpected '.'", { > currentLine = > │ > "-123."<br /> > │ > line = 0<br /> > column = > │ > 4 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"number > andThen many1 > │ > whitespace" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '.'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "-123."<br /> line = 0<br /> column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"-123." > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.53ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:4 Error parsing number > andThen many1 whitespace > │ > │ -123. > │ > │ ^Unexpected '.' > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4" > │ > |> parserEqual (Success (JNumber 123.4)) > │ > > │ > ── [ 42.70ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines > = > │ > [|"123.4"|]<br /> > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = > [|"123.4"|]<br > │ > /> position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 44.19ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.4 > │ > │ JNumber 123.4 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "00.4" > │ > |> parserEqual ( > │ > Failure ( > │ > "number andThen many1 whitespace", > │ > "Unexpected '0'", > │ > { currentLine = "00.4"; line = 0; column = 1 } > │ > ) > │ > ) > │ > > │ > ── [ 36.20ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure<br /> ("number > andThen many1 > │ > whitespace", "Unexpected '0'", { > currentLine = > │ > "00.4"<br />│ > line = 0<br /> > column = > │ > 1 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"number > andThen many1 > │ > whitespace" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '0'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "00.4"<br /> line = 0<br /> column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"00.4" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.36ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:1 Error parsing number > andThen many1 whitespace > │ > │ 00.4 > │ > │ ^Unexpected '0' > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123e4" > │ > |> parserEqual (Success (JNumber 1230000.0)) > │ > > │ > ── [ 43.00ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 1230000.0, { > lines = > │ > [|"123e4"|]<br /> > position = { line = > │ > 1<br /> column = > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 1230000.0, { lines = > │ > [|"123e4"|]<br /> position = { line = 1<br /> > column = > │ > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> > │ > <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123e4"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123e4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 44.53ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 1230000.0 > │ > │ JNumber 1230000.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4e5" > │ > |> parserEqual (Success (JNumber 12340000.0)) > │ > > │ > ── [ 40.46ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 12340000.0, { > lines = > │ > [|"123.4e5"|]<br /> > position = { line = > │ > 1<br /> column = > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 12340000.0, { lines = > │ > [|"123.4e5"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr > │ > ><td>Item</td><td><div > class="dni-plaintext"><pre>12340000.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4e5"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 41.92ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 12340000.0 > │ > │ JNumber 12340000.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4e-5" > │ > |> parserEqual (Success (JNumber 0.001234)) > │ > > │ > ── [ 40.65ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 0.001234, { > lines = > │ > [|"123.4e-5"|]<br /> > position = { line = > │ > 1<br /> column = 0 > } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 0.001234, { lines = > │ > [|"123.4e-5"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > │ > td>Item</td><td><div class="dni-plaintext"><pre>0.001234 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4e-5"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 42.20ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 0.001234 > │ > │ JNumber 0.001234 > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jArray > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jArray = > │ > let left = pchar '[[' .>> spaces > │ > let right = pchar ']]' .>> spaces > │ > let comma = pchar ',' .>> spaces > │ > let value = jValue .>> spaces > │ > > │ > let values = sepBy value comma > │ > > │ > between left values right > │ > |>> JArray > │ > <?> "array" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > jArray > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jArray "[[ 1, 2 ]]" > │ > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 > ]])) > │ > > │ > ── [ 77.12ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JArray [JNumber 1.0; > JNumber 2.0], { lines > │ > = [|"[ 1, 2 ]"|]<br />│ > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber > 2.0], { lines = > │ > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber > │ > > 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > > tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t > │ > body><tr><td>0</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><t > │ > d><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 2.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>2.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><detai > │ > ls class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 78.98ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jArray "[[ 1, 2, ]]" > │ > |> parserEqual ( > │ > Failure ( > │ > "array", > │ > "Unexpected ','", > │ > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 > } > │ > ) > │ > ) > │ > > │ > ── [ 43.52ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("array", > "Unexpected > │ > ','", { currentLine = "[ 1, 2, ]"<br > /> > │ > line = 0<br /> column > = 6 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div > class="dni-plaintext"><pre>"array" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > ','" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "[ 1, 2, ]"<br /> line = 0<br /> column = 6 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div class="dni-plaintext"><pre>"[ 1, > 2, ]" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>6 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 44.66ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:6 Error parsing array > │ > │ [ 1, 2, ] > │ > │ ^Unexpected ',' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jObject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jObject = > │ > let left = spaces >>. pchar '{' .>> spaces > │ > let right = pchar '}' .>> spaces > │ > let colon = pchar ':' .>> spaces > │ > let comma = pchar ',' .>> spaces > │ > let key = quotedString .>> spaces > │ > let value = jValue .>> spaces > │ > > │ > let keyValue = (key .>> colon) .>>. value > │ > let keyValues = sepBy keyValue comma > │ > > │ > between left keyValues right > │ > |>> Map.ofList > │ > |>> JObject > │ > <?> "object" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > jArray > │ > jObject > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jObject """{ "a":1, "b" : 2 }""" > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "a", JNumber 1.0 > │ > "b", JNumber 2.0 > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 85.56ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject (map > [("a", > │ > JNumber 1.0); ("b", JNumber 2.0)]),<br /> { > lines = [|"{ > │ > "a":1, "b" : 2 }"|]<br /> > position = { line = > │ > 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject (map [("a", > JNumber 1.0); > │ > ("b", JNumber 2.0)]), { lines = [|"{ > "a":1, > │ > "b" : 2 }"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject (map [("a", > JNumber 1.0); > │ > ("b", JNumber > │ > > 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > > >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t > │ > body><tr><td><div class="dni-plaintext"><pre>"a" > │ > │ </pre></div></td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > │ > > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><div > │ > class="dni-plaintext"><pre>"b" > │ > │ > │ > > </pre></d...le></td></tr></tbody></table></div></details></td></tr><tr><td>Item2 > │ > </td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>{ lines = [|"{ > "a":1, "b" > │ > : 2 }"|]<br /> position = { line = 1<br /> > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ { > "a":1, "b" : > │ > 2 } > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 87.32ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JObject (map [("a", JNumber 1.0); ("b", > JNumber 2.0)]) > │ > │ JObject (map [("a", JNumber 1.0); ("b", > JNumber 2.0)]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jObject """{ "a":1, "b" : 2, }""" > │ > |> parserEqual ( > │ > Failure ( > │ > "object", > │ > "Unexpected ','", > │ > { currentLine = """{ "a":1, "b" : 2, }"""; line = > 0; column = 18 } > │ > ) > │ > ) > │ > > │ > ── [ 45.77ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("object", > "Unexpected > │ > ','", { currentLine = "{ "a":1, > "b" : 2, > │ > }"<br /> line = > 0<br /> > │ > column = 18 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div > class="dni-plaintext"><pre>"object" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > ','" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "{ "a":1, "b" : 2, }"<br /> > line = 0<br /> > │ > column = 18 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div class="dni-plaintext"><pre>"{ > "a":1, > │ > "b" : 2, }" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>18 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 46.97ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:18 Error parsing object > │ > │ { "a":1, "b" : 2, } > │ > │ ^Unexpected ',' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example1 = """{ > │ > "name" : "Scott", > │ > "isMale" : true, > │ > "bday" : {"year":2001, "month":12, "day":25 }, > │ > "favouriteColors" : [["blue", "green"]], > │ > "emptyArray" : [[]], > │ > "emptyObject" : {} > │ > }""" > │ > run jValue example1 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "name", JString "Scott" > │ > "isMale", JBool true > │ > "bday", JObject ( > │ > Map.ofList [[ > │ > "year", JNumber 2001.0 > │ > "month", JNumber 12.0 > │ > "day", JNumber 25.0 > │ > ]] > │ > ) > │ > "favouriteColors", JArray [[ JString > "blue"; JString "green" ]] > │ > "emptyArray", JArray [[]] > │ > "emptyObject", JObject Map.empty > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 152.27ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("bday",<br /> JObject<br /> > (map<br /> > │ > [("day", JNumber 25.0); ("month", > JNumber 12.0);<br /> > │ > ("year", JNumber 2001.0)])); > ("emptyArray", JArray []);<br > │ > /> ("emptyObject", JObject (map []));<br > /> > │ > ("favouriteColors", > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("bday",<br /> JObject<br /> > (map<br /> > │ > [("day", JNumber 25.0); ("month", > JNumber 12.0);<br /> > │ > ("year", JNumber 2001.0)])); > ("emptyArray", JArray []);<br > │ > /> ("emptyObject", JObject (map []));<br />│ > ("favouriteColors", JArray [JString > "blue"; JString > │ > > "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t > │ > r><td>Item1</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("bday",<br > │ > /> JObject<br /> (map<br /> > [("day", JNumber > │ > 25.0); ("month", JNumber 12.0);<br /> > ("year", > │ > JNumber 2001.0)])); ("emptyArray", JArra...0 } > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>li > │ > nes</td><td><div class="dni-plaintext"><pre>[ {, > "name" : > │ > "Scott",, "isMale" : true,, > "bday" : > │ > {"year":2001, "month":12, > "day":25 },, > │ > "favouriteColors" : ["blue", > "green"],, > │ > "emptyArray" : [],, "emptyObject" : > {}, } > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 8<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>8 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 153.86ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("bday", > │ > │ JObject > │ > │ (map > │ > │ [("day", JNumber 25.0); > ("month", JNumber 12.0); > │ > │ ("year", JNumber > 2001.0)])); ("emptyArray", > │ > JArray []); > │ > │ ("emptyObject", JObject (map [])); > │ > │ ("favouriteColors", JArray > [JString "blue"; JString > │ > "green"]); > │ > │ ("isMale", JBool true); ("name", > JString "Scott")]) > │ > │ JObject > │ > │ (map > │ > │ [("bday", JObject (map [("day", > JNumber 25.0); ("month", > │ > JNumber 12.0); ("year", JNumber 2001.0)])); > │ > │ ("emptyArray", JArray []); > ("emptyObject", JObject (map > │ > [])); > │ > │ ("favouriteColors", JArray > [JString "blue"; JString > │ > "green"]); ("isMale", JBool true); ("name", JString > "Scott")]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example2 = """{"widget": { > │ > "debug": "on", > │ > "window": { > │ > "title": "Sample Konfabulator Widget", > │ > "name": "main_window", > │ > "width": 500, > │ > "height": 500 > │ > }, > │ > "image": { > │ > "src": "Images/Sun.png", > │ > "name": "sun1", > │ > "hOffset": 250, > │ > "vOffset": 250, > │ > "alignment": "center" > │ > }, > │ > "text": { > │ > "data": "Click Here", > │ > "size": 36, > │ > "style": "bold", > │ > "name": "text1", > │ > "hOffset": 250, > │ > "vOffset": 100, > │ > "alignment": "center", > │ > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * > 90;" > │ > } > │ > }}""" > │ > > │ > run jValue example2 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "widget", JObject ( > │ > Map.ofList [[ > │ > "debug", JString "on" > │ > "window", JObject ( > │ > Map.ofList [[ > │ > "title", JString "Sample > Konfabulator Widget" > │ > "name", JString > "main_window" > │ > "width", JNumber 500.0 > │ > "height", JNumber 500.0 > │ > ]] > │ > ) > │ > "image", JObject ( > │ > Map.ofList [[ > │ > "src", JString > "Images/Sun.png" > │ > "name", JString "sun1" > │ > "hOffset", JNumber 250.0 > │ > "vOffset", JNumber 250.0 > │ > "alignment", JString > "center" > │ > ]] > │ > ) > │ > "text", JObject ( > │ > Map.ofList [[ > │ > "data", JString "Click > Here" > │ > "size", JNumber 36.0 > │ > "style", JString "bold" > │ > "name", JString "text1" > │ > "hOffset", JNumber 250.0 > │ > "vOffset", JNumber 100.0 > │ > "alignment", JString > "center" > │ > "onMouseUp", JString > "sun1.opacity = > │ > (sun1.opacity / 100) * 90;" > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 327.11ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br />│ > (map<br /> [("alignment", > JString > │ > "center");<br /> > │ > > ("hOffset"...</code></span></summary><div><table><thead><tr></tr></the > │ > ad><tbody><tr><td>Item</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br /> > (map<br /> > │ > [("alignment", JString "center"); > ("hOffset", > │ > JNumber 250.0);<br /> ("name", > JString > │ > > "sun1"...</code></span></summary><div><table><thead><tr></tr></thead>< > │ > tbody><tr><td>Item1</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br />│ > (...ot;center", },, "text": {, > "data": > │ > "Click Here",, "size": 36,,│ > "style": "bold",, > "name": > │ > "text1",, "hOffset": 250,,│ > "vOffset": 100,, "alignment": > "center",, > │ > "onMouseUp": "sun1.opacity = (sun1.opacity / > 100) * 90;", > │ > }, }} > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 26<br > │ > /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>26 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 328.66ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("widget", > │ > │ JObject > │ > │ (map > │ > │ [("debug", JString "on"); > │ > │ ("image", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "sun1"); ("src", JString > │ > "Images/Sun.png"); > │ > │ ("vOffset", JNumber > 250.0)])); > │ > │ ("text", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > │ ("data", JString > "Click Here"); > │ > ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "text1"); > │ > │ ("onMouseUp", > │ > │ JString > "sun1.opacity = (sun1.opacity / > │ > 100) * 90;"); > │ > │ ("size", JNumber > 36.0); ("style", JString > │ > "bold"); > │ > │ ("vOffset", JNumber > 100.0)])); > │ > │ ("window", > │ > │ JObject > │ > │ (map > │ > │ [("height", JNumber > 500.0); ("name", > │ > JString "main_window"); > │ > │ ("title", JString > "Sample Konfabulator > │ > Widget"); > │ > │ ("width", JNumber > 500.0)]))]))]) > │ > │ JObject > │ > │ (map > │ > │ [("widget", > │ > │ JObject > │ > │ (map > │ > │ [("debug", JString "on"); > │ > │ ("image", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > ("hOffset", JNumber 250.0); ("name", JString "sun1"); > │ > │ ("src", JString > "Images/Sun.png"); > │ > ("vOffset", JNumber 250.0)])); > │ > │ ("text", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); ("data", > │ > JString "Click Here"); ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "text1"); ("onMouseUp", > │ > JString "sun1.opacity = (sun1.opacity / 100) * 90;"); > │ > │ ("size", JNumber > 36.0); ("style", JString > │ > "bold"); ("vOffset", JNumber 100.0)])); > │ > │ ("window", > │ > │ JObject > │ > │ (map > │ > │ [("height", JNumber > 500.0); ("name", > │ > JString "main_window"); > │ > │ ("title", JString > "Sample Konfabulator > │ > Widget"); ("width", JNumber 500.0)]))]))]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example3 = """{ > │ > "string": "Hello, \"World\"!", > │ > "escapedString": "This string contains > \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > │ > "number": 42, > │ > "scientificNumber": 3.14e-10, > │ > "boolean": true, > │ > "nullValue": null, > │ > "array": [[1, 2, 3, 4, 5]], > │ > "unicodeString1": "프리마", > │ > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > │ > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > │ > "specialCharacters": "!@#$%^&*()", > │ > "emptyArray": [[]], > │ > "emptyObject": {}, > │ > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > │ > "object": { > │ > "nestedString": "Nested Value", > │ > "nestedNumber": 3.14, > │ > "nestedBoolean": false, > │ > "nestedNull": null, > │ > "nestedArray": [["a", "b", "c"]], > │ > "nestedObject": { > │ > "nestedProperty": "Nested Object Value" > │ > } > │ > }, > │ > "nestedObjects": [[ > │ > {"name": "Alice", "age": 25}, > │ > {"name": "Bob", "age": 30} > │ > ]] > │ > }""" > │ > run jValue example3 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "string", JString @"Hello, ""World""!" > │ > "escapedString", JString @"This string > contains > │ > \/\\\b\f\n\r\t\""\'" > │ > "number", JNumber 42.0 > │ > "scientificNumber", JNumber 3.14e-10 > │ > "boolean", JBool true > │ > "nullValue", JNull > │ > "array", JArray [[ > │ > JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber > │ > 5.0 > │ > ]] > │ > "unicodeString1", JString "프리마" > │ > "unicodeString2", JString @"Hello, > ""World""!" > │ > "specialCharacters", JString "!@#$%^&*()" > │ > "emptyArray", JArray [[]] > │ > "emptyObject", JObject Map.empty > │ > "nestedArrays", JArray [[ > │ > JArray [[ JNumber 1.0; JNumber 2.0; > JNumber 3.0 ]] > │ > JArray [[ JNumber 4.0; JNumber 5.0; > JNumber 6.0 ]] > │ > ]] > │ > "object", JObject ( > │ > Map.ofList [[ > │ > "nestedString", JString "Nested > Value" > │ > "nestedNumber", JNumber 3.14 > │ > "nestedBoolean", JBool false > │ > "nestedNull", JNull > │ > "nestedArray", JArray [[JString > "a"; JString "b"; > │ > JString "c"]] > │ > "nestedObject", JObject ( > │ > Map.ofList [[ > │ > "nestedProperty", JString > "Nested Object Value" > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > "nestedObjects", JArray [[ > │ > JObject (Map.ofList [[ "name", JString > "Alice"; "age", JNumber > │ > 25.0 ]]) > │ > JObject (Map.ofList [[ "name", JString > "Bob"; "age", JNumber > │ > 30.0 ]]) > │ > ]] > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 433.57ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("array",<br /> JArray<br /> > [JNumber 1.0; > │ > JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />│ > ("boolean", JBool true); ("emptyArray", > JArray []);<br /> > │ > ("emptyObject", JObject (map []));<br /> > │ > ("escapedString", JString "This > │ > > s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > tem</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("array",<br /> JArray [JNumber 1.0; > JNumber 2.0; JNumber 3.0; > │ > JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); > │ > ("emptyArray", JArray []);<br /> > ("emptyObject", > │ > JObject (map []));<br /> ("escapedString", > JString "This > │ > string contains \/\\\b\f<br />\r\t\"\'");<br > /> > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > │ > [("array",<br /> JArray [JNumber 1.0; > JNumber 2.0; JNumber 3.0; > │ > JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); > │ > ("emptyArray", JArray []);<br /> > ("emptyObject", > │ > JObject (map []));<br /> ("es...ot;: 3.14,, > │ > "nestedBoolean": false,, > "nestedNull": null,, > │ > "nestedArray": ["a", "b", > "c"],, > │ > "nestedObject": {, > "nestedProperty": "Nested > │ > Object Value", }, },, > "nestedObjects": [, > │ > {"name": "Alice", "age": > 25},, > │ > {"name": "Bob", "age": 30}, > ], } > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 29<br > │ > /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>29 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 435.21ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("array", > │ > │ JArray [JNumber 1.0; JNumber 2.0; > JNumber 3.0; JNumber > │ > 4.0; JNumber 5.0]); > │ > │ ("boolean", JBool true); > ("emptyArray", JArray []); > │ > │ ("emptyObject", JObject (map [])); > │ > │ ("escapedString", JString "This > string contains > │ > \/\\\b\f\n\r\t\"\'"); > │ > │ ("nestedArrays", > │ > │ JArray > │ > │ [JArray [JNumber 1.0; JNumber > 2.0; JNumber 3.0]; > │ > │ JArray [JNumber 4.0; JNumber > 5.0; JNumber 6.0]]); > │ > │ ("nestedObjects", > │ > │ JArray > │ > │ [JObject (map [("age", JNumber > 25.0); ("name", > │ > JString "Alice")]); > │ > │ JObject (map [("age", JNumber > 30.0); ("name", > │ > JString "Bob")])]); > │ > │ ("nullValue", JNull); ("number", > JNumber 42.0); ...]) > │ > │ JObject > │ > │ (map > │ > │ [("array", JArray [JNumber 1.0; > JNumber 2.0; JNumber > │ > 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true); > │ > │ ("emptyArray", JArray []); > ("emptyObject", JObject (map > │ > [])); > │ > │ ("escapedString", JString "This > string contains > │ > \/\\\b\f\n\r\t\"\'"); > │ > │ ("nestedArrays", > │ > │ JArray [JArray [JNumber 1.0; > JNumber 2.0; JNumber > │ > 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ > │ ("nestedObjects", > │ > │ JArray > │ > │ [JObject (map [("age", JNumber > 25.0); ("name", > │ > JString "Alice")]); > │ > │ JObject (map [("age", JNumber > 30.0); ("name", > │ > JString "Bob")])]); ("nullValue", JNull); > │ > │ ("number", JNumber 42.0); ...]) > │ > │ > │ > │ > │ 00:00:20 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 152736 } > │ 00:00:20 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:21 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb to html > │ 00:00:21 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:21 v #7 ! validate(nb) > │ 00:00:22 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:22 v #9 ! return _pygments_highlight( > │ 00:00:22 v #10 ! [NbConvertApp] Writing 501905 bytes to > c:\home\git\polyglot\apps\parser\JsonParser.dib.html > │ 00:00:23 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 864 } > │ 00:00:23 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 864 } > │ 00:00:23 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:23 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:23 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:23 d #16 spiral.run / dib / { exit_code = 0; > result_length = 153659 } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Parser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/Parser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/Parser.dib" > --output-path "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Parser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### TextInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Position = > │ > { > │ > line : int > │ > column : int > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let initialPos = { line = 0; column = 0 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline incrCol (pos : Position) = > │ > { pos with column = pos.column + 1 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline incrLine pos = > │ > { line = pos.line + 1; column = 0 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type InputState = > │ > { > │ > lines : string[[]] > │ > position : Position > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline fromStr str = > │ > { > │ > lines = > │ > if str |> String.IsNullOrEmpty > │ > then [[||]] > │ > else str |> SpiralSm.split_string [[| "\r\n"; > "\n" |]] > │ > position = initialPos > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > fromStr "" |> _assertEqual { > │ > lines = [[||]] > │ > position = { line = 0; column = 0 } > │ > } > │ > > │ > ── [ 49.98ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [||] > │ > │ position = { line = 0 > │ > │ column = 0 } } > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > fromStr "Hello \n World" |> _assertEqual { > │ > lines = [[| "Hello "; " World" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > > │ > ── [ 25.12ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello "; " World"|] > │ > │ position = { line = 0 > │ > │ column = 0 } } > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline currentLine inputState = > │ > let linePos = inputState.position.line > │ > if linePos < inputState.lines.Length > │ > then inputState.lines.[[linePos]] > │ > else "end of file" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline nextChar input = > │ > let linePos = input.position.line > │ > let colPos = input.position.column > │ > > │ > if linePos >= input.lines.Length > │ > then input, None > │ > else > │ > let currentLine = currentLine input > │ > if colPos < currentLine.Length then > │ > let char = currentLine.[[colPos]] > │ > let newPos = incrCol input.position > │ > let newState = { input with position = newPos } > │ > newState, Some char > │ > else > │ > let char = '\n' > │ > let newPos = incrLine input.position > │ > let newState = { input with position = newPos } > │ > newState, Some char > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let newInput, charOpt = fromStr "Hello World" |> nextChar > │ > > │ > newInput |> _assertEqual { > │ > lines = [[| "Hello World" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > charOpt |> _assertEqual (Some 'H') > │ > > │ > ── [ 43.12ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello World"|] > │ > │ position = { line = 0 > │ > │ column = 1 } } > │ > │ > │ > │ Some 'H' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let newInput, charOpt = fromStr "Hello\n\nWorld" |> > nextChar > │ > > │ > newInput |> _assertEqual { > │ > lines = [[| "Hello"; ""; "World" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > charOpt |> _assertEqual (Some 'H') > │ > > │ > ── [ 33.52ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello"; ""; "World"|] > │ > │ position = { line = 0 > │ > │ column = 1 } } > │ > │ > │ > │ Some 'H' > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Parser > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Input = InputState > │ > type ParserLabel = string > │ > type ParserError = string > │ > > │ > type ParserPosition = > │ > { > │ > currentLine : string > │ > line : int > │ > column : int > │ > } > │ > > │ > type ParseResult<'a> = > │ > | Success of 'a > │ > | Failure of ParserLabel * ParserError * ParserPosition > │ > > │ > type Parser<'a> = > │ > { > │ > label : ParserLabel > │ > parseFn : Input -> ParseResult<'a * Input> > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline printResult result = > │ > match result with > │ > | Success (value, input) -> > │ > printfn $"%A{value}" > │ > | Failure (label, error, parserPos) -> > │ > let errorLine = parserPos.currentLine > │ > let colPos = parserPos.column > │ > let linePos = parserPos.line > │ > let failureCaret = $"{' ' |> string |> > String.replicate colPos}^{error}" > │ > printfn $"Line:%i{linePos} Col:%i{colPos} Error > parsing > │ > %s{label}\n%s{errorLine}\n%s{failureCaret}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline runOnInput parser input = > │ > parser.parseFn input > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline run parser inputStr = > │ > runOnInput parser (fromStr inputStr) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parserPositionFromInputState (inputState : > Input) = > │ > { > │ > currentLine = currentLine inputState > │ > line = inputState.position.line > │ > column = inputState.position.column > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline getLabel parser = > │ > parser.label > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline setLabel parser newLabel = > │ > { > │ > label = newLabel > │ > parseFn = fun input -> > │ > match parser.parseFn input with > │ > | Success s -> Success s > │ > | Failure (oldLabel, err, pos) -> Failure > (newLabel, err, pos) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<?>) = setLabel > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline satisfy predicate label = > │ > { > │ > label = label > │ > parseFn = fun input -> > │ > let remainingInput, charOpt = nextChar input > │ > match charOpt with > │ > | None -> > │ > let err = "No more input" > │ > let pos = parserPositionFromInputState > input > │ > Failure (label, err, pos) > │ > | Some first -> > │ > if predicate first > │ > then Success (first, remainingInput) > │ > else > │ > let err = $"Unexpected '%c{first}'" > │ > let pos = parserPositionFromInputState > input > │ > Failure (label, err, pos) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > 'H', > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 41.04ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('H', { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "World" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > runOnInput parser input |> _assertEqual ( > │ > Failure ( > │ > "H", > │ > "Unexpected 'W'", > │ > { > │ > currentLine = "World" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 36.31ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("H", "Unexpected 'W'", { > currentLine = "World" > │ > │ line = > 0 > │ > │ column > = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline bindP f p = > │ > { > │ > label = "unknown" > │ > parseFn = fun input -> > │ > match runOnInput p input with > │ > | Failure (label, err, pos) -> Failure (label, > err, pos) > │ > | Success (value1, remainingInput) -> > runOnInput (f value1) > │ > remainingInput > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>=) p f = bindP f p > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = > 'e') "e" > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > 'e', > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 50.82ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('e', { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 2 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "World" > │ > let parser = satisfy (fun c -> c = 'W') "W" > │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = > 'e') "e" > │ > runOnInput parser2 input |> _assertEqual ( > │ > Failure ( > │ > "e", > │ > "Unexpected 'o'", > │ > { > │ > currentLine = "World" > │ > line = 0 > │ > column = 1 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 51.55ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("e", "Unexpected 'o'", { > currentLine = "World" > │ > │ line = > 0 > │ > │ column > = 1 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline returnP x = > │ > { > │ > label = $"%A{x}" > │ > parseFn = fun input -> Success (x, input) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = returnP "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 31.32ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 0 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline mapP f = > │ > bindP (f >> returnP) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<!>) = mapP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (|>>) x f = f <!> x > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = parser |>> string > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > "H", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 42.15ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("H", { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline applyP fP xP = > │ > fP >>= > │ > fun f -> > │ > xP >>= > │ > fun x -> > │ > returnP (f x) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<*>) = applyP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline lift2 f xP yP = > │ > returnP f <*> xP <*> yP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) > parser parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > "He", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 66.02ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("He", { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 2 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline andThen p1 p2 = > │ > p1 >>= > │ > fun p1Result -> > │ > p2 >>= > │ > fun p2Result -> > │ > returnP (p1Result, p2Result) > │ > <?> $"{getLabel p1} andThen {getLabel p2}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (.>>.) = andThen > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = parser .>>. parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > ('H', 'e'), > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 76.86ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (('H', 'e'), { lines = > [|"Hello"|] > │ > │ position = { line > = 0 > │ > │ > column = 2 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline orElse p1 p2 = > │ > { > │ > label = $"{getLabel p1} orElse {getLabel p2}" > │ > parseFn = fun input -> > │ > match runOnInput p1 input with > │ > | Success _ as result -> result > │ > | Failure _ -> runOnInput p2 input > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<|>) = orElse > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'h') "h" > │ > let parser3 = parser <|> parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > 'h', > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 46.92ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('h', { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline choice listOfParsers = > │ > listOfParsers |> List.reduce (<|>) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'h') "h" > │ > let parser3 = choice [[ parser; parser2 ]] > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > 'h', > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 46.14ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('h', { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec sequence parserList = > │ > match parserList with > │ > | [[]] -> returnP [[]] > │ > | head :: tail -> (lift2 cons) head (sequence tail) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = sequence [[ parser; parser2 ]] > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e' ]], > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 54.96ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'], { lines = > [|"Hello"|] > │ > │ position = { line > = 0 > │ > │ > column = 2 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec parseZeroOrMore parser input = > │ > match runOnInput parser input with > │ > | Failure (_, _, _) -> > │ > [[]], input > │ > | Success (firstValue, inputAfterFirstParse) -> > │ > let subsequentValues, remainingInput = > parseZeroOrMore parser > │ > inputAfterFirstParse > │ > firstValue :: subsequentValues, remainingInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline many parser = > │ > { > │ > label = $"many {getLabel parser}" > │ > parseFn = fun input -> Success (parseZeroOrMore > parser input) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = many parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > [[]], > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 42.84ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ([], { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 0 } > }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline many1 p = > │ > p >>= > │ > fun head -> > │ > many p >>= > │ > fun tail -> > │ > returnP (head :: tail) > │ > <?> $"many1 {getLabel p}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = many1 parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Failure ( > │ > "many1 H", > │ > "Unexpected 'h'", > │ > { > │ > currentLine = "hello" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 57.73ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("many1 H", "Unexpected 'h'", { > currentLine = "hello" > │ > │ > line = 0 > │ > │ > column = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline opt p = > │ > let some = p |>> Some > │ > let none = returnP None > │ > (some <|> none) > │ > <?> $"opt {getLabel p}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = opt parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > None, > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 55.40ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (None, { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 0 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (.>>) p1 p2 = > │ > p1 .>>. p2 > │ > |> mapP fst > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>.) p1 p2 = > │ > p1 .>>. p2 > │ > |> mapP snd > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline between p1 p2 p3 = > │ > p1 >>. p2 .>> p3 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "[[Hello]]" > │ > let parser = > │ > between > │ > (satisfy (fun c -> c = '[[') "[[") > │ > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' > .. 'Z' ]] |> > │ > List.contains c) "letter")) > │ > (satisfy (fun c -> c = ']]') "]]") > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > │ > { > │ > lines = [[| "[[Hello]]" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 140.88ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { > lines = [|"[Hello]"|] > │ > │ > position = { line = 0 > │ > │ > column = 7 > │ > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline sepBy1 p sep = > │ > let sepThenP = sep >>. p > │ > p .>>. many sepThenP > │ > |>> fun (p, pList) -> p :: pList > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline sepBy p sep = > │ > sepBy1 p sep <|> returnP [[]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello,World" > │ > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not > comma")) (satisfy > │ > (fun c -> c = ',') "comma") > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; > 'l'; 'd'; '\n' ]] > │ > ]], > │ > { > │ > lines = [[| "Hello,World" |]] > │ > position = { line = 1; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 93.45ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; > ['W'; 'o'; 'r'; 'l'; > │ > 'd'; '\010']], { lines = [|"Hello,World"|] > │ > │ > │ > position = { line = 1 > │ > │ > │ > > │ > column = 0 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline pchar charToMatch = > │ > satisfy ((=) charToMatch) $"%c{charToMatch}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline anyOf listOfChars = > │ > listOfChars > │ > |> List.map pchar > │ > |> choice > │ > <?> $"anyOf %A{listOfChars}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 52.26ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { > lines = [|"Hello"|] > │ > │ > position = { line = 0 > │ > │ > column = 5 > │ > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline charListToStr charList = > │ > charList |> List.toArray |> String > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline manyChars cp = > │ > many cp > │ > |>> charListToStr > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline manyChars1 cp = > │ > many1 cp > │ > |>> charListToStr > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 70.54ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 5 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline pstring str = > │ > str > │ > |> List.ofSeq > │ > |> List.map pchar > │ > |> sequence > │ > |> mapP charListToStr > │ > <?> str > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = pstring "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 67.64ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 5 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let whitespaceChar = > │ > satisfy Char.IsWhiteSpace "whitespace" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let spaces = many whitespaceChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let spaces1 = many1 whitespaceChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr " Hello" > │ > let parser = spaces1 .>>. pstring "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > ([[ ' '; ' ' ]], "Hello"), > │ > { > │ > lines = [[| " Hello" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 62.15ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (([' '; ' '], "Hello"), { lines > = [|" Hello"|] > │ > │ > position = { line = 0 > │ > │ > column = 7 } > │ > }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let digitChar = > │ > satisfy Char.IsDigit "digit" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = digitChar > │ > runOnInput parser input |> _assertEqual ( > │ > Failure ( > │ > "digit", > │ > "Unexpected 'H'", > │ > { > │ > currentLine = "Hello" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 28.65ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("digit", "Unexpected 'H'", { > currentLine = "Hello" > │ > │ > line = 0 > │ > │ > column = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let pint = > │ > let inline resultToInt (sign, digits) = > │ > let i = int digits > │ > match sign with > │ > | Some ch -> -i > │ > | None -> i > │ > > │ > let digits = manyChars1 digitChar > │ > > │ > opt (pchar '-') .>>. digits > │ > |> mapP resultToInt > │ > <?> "integer" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run pint "-123" > │ > |> _assertEqual ( > │ > Success ( > │ > -123, > │ > { > │ > lines = [[| "-123" |]] > │ > position = { line = 0; column = 4 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 31.64ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (-123, { lines = [|"-123"|] > │ > │ position = { line = 0 > │ > │ column = 4 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let pfloat = > │ > let inline resultToFloat (((sign, digits1), point), > digits2) = > │ > let fl = float $"{digits1}.{digits2}" > │ > match sign with > │ > | Some ch -> -fl > │ > | None -> fl > │ > > │ > let digits = manyChars1 digitChar > │ > > │ > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > │ > |> mapP resultToFloat > │ > <?> "float" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run pfloat "-123.45" > │ > |> _assertEqual ( > │ > Success ( > │ > -123.45, > │ > { > │ > lines = [[| "-123.45" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 36.33ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (-123.45, { lines = > [|"-123.45"|] > │ > │ position = { line = > 0 > │ > │ column > = 7 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline createParserForwardedToRef<'a> () = > │ > let mutable parserRef : Parser<'a> = > │ > { > │ > label = "unknown" > │ > parseFn = fun _ -> failwith "unfixed forwarded > parser" > │ > } > │ > > │ > let wrapperParser = > │ > { parserRef with > │ > parseFn = fun input -> runOnInput parserRef > input > │ > } > │ > > │ > wrapperParser, (fun v -> parserRef <- v) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>%) p x = > │ > p > │ > |>> fun _ -> x > │ 00:00:18 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 31883 } > │ 00:00:18 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:19 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/Parser.dib.ipynb to html > │ 00:00:19 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:19 v #7 ! validate(nb) > │ 00:00:19 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:19 v #9 ! return _pygments_highlight( > │ 00:00:20 v #10 ! [NbConvertApp] Writing 413747 bytes to > c:\home\git\polyglot\apps\parser\Parser.dib.html > │ 00:00:20 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 856 } > │ 00:00:20 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 856 } > │ 00:00:20 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:21 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:21 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:21 d #16 spiral.run / dib / { exit_code = 0; > result_length = 32798 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Parser.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > JsonParser.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Parser.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > JsonParser.dib > │ polyglot/apps/parser/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/build.ps1 } | Invoke-Block > > ── [ 6.75m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > spiral_compiler.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > spiral_compiler.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash: / > code.Length: 814549 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\spiral_compiler" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > All projects are up-to-date for > restore. > │ 00:00:13 v #7 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:13 v #8 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10600,85) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:13 v #9 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11420,43) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:14 v #10 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12350,43) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:14 v #11 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13016,71) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:33 v #12 > spiral_compiler -> > c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\s > piral_compiler.dll > │ 00:00:34 v #13 > spiral_compiler -> > C:\home\git\polyglot\deps\spiral\apps\compiler\dist\ > │ 00:00:35 d #14 runtime.execute_with_options_async / { > exit_code = 0; output_length = 2976; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\spiral_compiler" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral_compiler > │ spiral/apps/compiler/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: > spiral_compiler / $env:CI:'' > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/Supervisor.dib" --output-path > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Supervisor (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > │ > > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > │ > > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > │ > > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > │ > rp.Json.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > open Microsoft.AspNetCore.SignalR.Client > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### sendJson > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sendJson (port : int) (json : string) = async { > │ > let host = "127.0.0.1" > │ > let! portOpen = SpiralNetworking.test_port_open host > port > │ > if portOpen then > │ > try > │ > let connection = > │ > > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > │ > do! connection.StartAsync () |> Async.AwaitTask > │ > let! result = connection.InvokeAsync<string> > ("ClientToServerMsg", > │ > json) |> Async.AwaitTask > │ > do! connection.StopAsync () |> Async.AwaitTask > │ > trace Verbose (fun () -> $"Supervisor.sendJson > / port: {port} / > │ > json: {json |> SpiralSm.ellipsis_end 200} / result: {result > |> Option.ofObj |> > │ > Option.map (SpiralSm.ellipsis_end 200)}") _locals > │ > return Some result > │ > with ex -> > │ > trace Critical (fun () -> $"Supervisor.sendJson > / port: {port} / > │ > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > return None > │ > else > │ > trace Debug (fun () -> $"Supervisor.sendJson / > port: {port} / error: > │ > port not open") _locals > │ > return None > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### sendObj > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sendObj port obj = > │ > obj > │ > |> System.Text.Json.JsonSerializer.Serialize > │ > |> sendJson port > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### workspaceRoot > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### getFilePathFromUri > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFilePathFromUri uri = > │ > match System.Uri.TryCreate (uri, > System.UriKind.Absolute) with > │ > | true, uri -> uri.AbsolutePath |> > System.IO.Path.GetFullPath > │ > | _ -> failwith "invalid uri" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### getCompilerPort > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCompilerPort () = > │ > 13805 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### serialize_obj > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let serializeObj obj = > │ > try > │ > obj > │ > |> FSharp.Json.Json.serialize > │ > |> SpiralSm.replace "\\\\" "\\" > │ > |> SpiralSm.replace "\\r\\n" "\n" > │ > |> SpiralSm.replace "\\n" "\n" > │ > with ex -> > │ > trace Critical (fun () -> > "Supervisor.serialize_obj / obj: %A{obj}") > │ > _locals > │ > "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Backend > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Backend = > │ > | Fsharp > │ > | Cuda > │ > | Gleam > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > │ > 2.0/FSharpx.Collections.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > │ > .dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > │ > " > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > │ > ons.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > │ > dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > │ > dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > │ > t9.0/Microsoft.Extensions.Logging.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > │ > > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > │ > > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > │ > ons.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > │ > 0/System.Management.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 1.70m - diagnostics ] > ───────────────────────────────────────────────────── > │ > │ input.fsx (10087,85)-(10087,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (10600,85)-(10600,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (11420,43)-(11420,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (12350,43)-(12350,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (13016,71)-(13016,74) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open spiral_compiler > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### awaitCompiler > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let awaitCompiler port cancellationToken = async { > │ > let host = "127.0.0.1" > │ > let struct (ct, disposable) = cancellationToken |> > │ > SpiralThreading.new_disposable_token > │ > let! ct = ct |> > SpiralAsync.merge_cancellation_token_with_default_async > │ > > │ > let compiler = MailboxProcessor.Start (fun inbox -> > async { > │ > let! availablePort = > SpiralNetworking.get_available_port (Some 180) host > │ > port > │ > if availablePort <> port then > │ > inbox.Post (port, false) > │ > else > │ > let compilerDir = > │ > workspaceRoot </> > "deps/spiral/apps/compiler/dist" > │ > |> System.IO.Path.GetFullPath > │ > > │ > let compilerPath = compilerDir </> > │ > $"spiral_compiler{SpiralPlatform.get_executable_suffix ()}" > │ > > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options (fun x -> > │ > { x with > │ > l0 = $"\"{compilerPath}\" --port > {availablePort} > │ > --default-int i32 --default-float f64" > │ > l1 = Some ct > │ > l3 = Some (fun struct (_, line, _) > -> async { > │ > if line |> SpiralSm.contains > │ > $"System.IO.IOException: Failed to bind to address > http://{host}:{port}: address > │ > already in use." then > │ > inbox.Post (port, false) > │ > > │ > if line |> SpiralSm.contains > $"Server bound to: > │ > http://localhost:{availablePort}" then > │ > let rec loop retry = async > { > │ > do! > │ > > SpiralNetworking.wait_for_port_access > │ > (Some 100) true host availablePort > │ > |> > Async.runWithTimeoutAsync 500 > │ > |> Async.Ignore > │ > > │ > let _locals () = > $"port: {availablePort} / > │ > retry: {retry} / {_locals ()}" > │ > try > │ > let pingObj = {| > Ping = true |} > │ > let! pingResult = > pingObj |> sendObj > │ > availablePort > │ > trace Verbose (fun > () -> > │ > $"Supervisor.awaitCompiler / Ping / result: > '%A{pingResult}'") _locals > │ > > │ > match pingResult > with > │ > | Some _ -> > inbox.Post (availablePort, > │ > true) > │ > | None -> do! loop > (retry + 1) > │ > with ex -> > │ > trace Verbose (fun > () -> > │ > $"Supervisor.awaitCompiler / Ping / ex: {ex |> > SpiralSm.format_exception}") > │ > _locals > │ > do! loop (retry + > 1) > │ > } > │ > do! loop 1 > │ > }) > │ > l6 = Some workspaceRoot > │ > } > │ > ) > │ > |> SpiralRuntime.execute_with_options_async > │ > > │ > trace Debug (fun () -> > $"Supervisor.awaitCompiler / exitCode: > │ > {exitCode} / result: {result}") _locals > │ > disposable.Dispose () > │ > }, ct) > │ > > │ > let! serverPort, managed = compiler.Receive () > │ > > │ > let connection = > │ > > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > │ > do! connection.StartAsync () |> Async.AwaitTask > │ > > │ > let event = Event<_> () > │ > let disposable' = connection.On<string> > ("ServerToClientMsg", event.Trigger) > │ > let stream = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = event.Publish |> > Async.AwaitEvent > │ > return Some (msg |> > │ > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > │ > }) > │ > () > │ > > │ > let disposable' = > │ > new_disposable (fun () -> > │ > async { > │ > disposable'.Dispose () > │ > do! connection.StopAsync () |> > Async.AwaitTask > │ > disposable.Dispose () > │ > if managed > │ > then do! > │ > SpiralNetworking.wait_for_port_access > (Some 100) false host > │ > serverPort > │ > |> Async.runWithTimeoutAsync 1500 > │ > |> Async.Ignore > │ > } > │ > |> Async.RunSynchronously > │ > ) > │ > > │ > return > │ > serverPort, > │ > stream, > │ > ct, > │ > disposable' > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Hopac > │ > open Hopac.Infixes > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### server > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let server1 = new_server<Job<unit>, obj, string option, > Job<unit>, unit> () > │ > let server2 = new_server<Job<unit>, obj, int array, > Job<unit>, unit> () > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 205.57ms - diagnostics ] > ────────────────────────────────────────────────── > │ > │ input.fsx (1,15)-(1,25) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > │ input.fsx (2,15)-(2,25) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### buildFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let buildFile backend timeout port cancellationToken path = > │ > let rec loop retry = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > |> > │ > SpiralFileSystem.normalize_path > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > let fileName = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > > │ > // let stream, disposable = fileDir |> > FileSystem.watchDirectory (fun _ > │ > -> true) > │ > // use _ = disposable > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let outputFileName = > │ > match backend with > │ > | Fsharp -> $"{fileName}.fsx" > │ > | Cuda -> $"{fileName}.py" > │ > | Gleam -> $"{fileName}.gleam" > │ > > │ > // let outputContentSeq = > │ > // stream > │ > // |> FSharp.Control.AsyncSeq.chooseAsync > (function > │ > // | _, > (FileSystem.FileSystemChange.Changed (path, Some text)) > │ > // when (path |> > System.IO.Path.GetFileName) = > │ > outputFileName > │ > // -> > │ > // // fileDir </> path |> > │ > SpiralFileSystem.read_all_text_retry_async > │ > // text |> Some |> Async.init > │ > // | _ -> None |> Async.init > │ > // ) > │ > // |> FSharp.Control.AsyncSeq.map (fun content > -> > │ > // Some (content |> SpiralSm.replace "\r\n" > "\n"), None > │ > // ) > │ > > │ > let printErrorData (data : {| uri : string; errors > : RString list |}) = > │ > let fileName = data.uri |> > System.IO.Path.GetFileName > │ > let errors = > │ > data.errors > │ > |> List.map snd > │ > |> SpiralSm.concat "\n" > │ > $"{fileName}:\n{errors}" > │ > > │ > > │ > let port = port |> Option.defaultWith > getCompilerPort > │ > // let! serverPort, errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > let serverPort = port > │ > // use _ = disposable > │ > > │ > let errorsSeq = > │ > server1.errors > │ > |> FSharp.Control.AsyncSeq.choose (fun error -> > │ > match error with > │ > | FatalError message -> > │ > Some (message, error) > │ > | TracedError data -> > │ > Some (data.message, error) > │ > | PackageErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | TokenizerErrors data when data.errors |> > List.isEmpty |> not > │ > -> > │ > Some (data |> printErrorData, error) > │ > | ParserErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | TypeErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | _ -> None > │ > ) > │ > |> FSharp.Control.AsyncSeq.map (fun (message, > error) -> > │ > None, Some (message, error) > │ > ) > │ > > │ > let timerSeq = > │ > 500 > │ > |> FSharp.Control.AsyncSeq.intervalMs > │ > |> FSharp.Control.AsyncSeq.map (fun _ -> None, > None) > │ > > │ > let compilerEvent = Event<option<string> * > option<string * > │ > ClientErrorsRes>> () > │ > // let disposable' = connection.On<string> > ("ServerToClientMsg", > │ > event.Trigger) > │ > let outputContentSeq = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = compilerEvent.Publish |> > Async.AwaitEvent > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputContentSeq unfoldAsync / msg: %A{msg}") _locals > │ > return Some (msg, ()) > │ > }) > │ > () > │ > > │ > let compilerEvent2 = Event<option<string> * (string > * ClientErrorsRes) > │ > list * int> () > │ > // let disposable' = connection.On<string> > ("ServerToClientMsg", > │ > event.Trigger) > │ > let outputContentSeq2 = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = compilerEvent2.Publish |> > Async.AwaitEvent > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: %A{msg}") _locals > │ > return Some (msg, ()) > │ > }) > │ > () > │ > > │ > let outputSeq = > │ > [[ outputContentSeq; errorsSeq; timerSeq ]] > │ > // [[ errorsSeq; timerSeq ]] > │ > |> FSharp.Control.AsyncSeq.mergeAll > │ > > │ > let! outputChild = > │ > ((None, [[]], 0), outputSeq) > │ > ||> FSharp.Control.AsyncSeq.scan ( > │ > fun (outputContentResult, errors, > typeErrorCount) > │ > (outputContent, error) -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > AsyncSeq.scan / outputContent:\n'{outputContent |> > Option.map > │ > (SpiralSm.ellipsis_end 1500)} / errors: {errors |> > serializeObj} / > │ > outputContentResult: {outputContentResult} / > typeErrorCount: {typeErrorCount} / > │ > retry: {retry} / error: {error} / path: {path}'") _locals > │ > match outputContent, error with > │ > | Some outputContent, None -> Some > outputContent, errors, > │ > typeErrorCount > │ > | None, Some ( > │ > _, > │ > FatalError "File main has a type > error somewhere in its > │ > path." > │ > ) -> > │ > outputContentResult, errors, > typeErrorCount + 1 > │ > | None, Some error -> > outputContentResult, error :: errors, > │ > typeErrorCount > │ > | None, None when typeErrorCount >= 1 > -> > │ > outputContentResult, errors, > typeErrorCount + 1 > │ > | _ -> outputContentResult, errors, > typeErrorCount > │ > ) > │ > |> FSharp.Control.AsyncSeq.takeWhileInclusive > (fun (outputContent, > │ > errors, typeErrorCount) -> > │ > trace > │ > Verbose > │ > (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / > │ > outputContent:\n'{outputContent |> Option.map > (SpiralSm.ellipsis_end 1500)}' / > │ > errors: {errors |> serializeObj} / typeErrorCount: > {typeErrorCount} / retry: > │ > {retry} / path: {path}") > │ > _locals > │ > #if INTERACTIVE > │ > let errorWait = 1 > │ > #else > │ > let errorWait = 1 > │ > #endif > │ > match outputContent, errors with > │ > | None, [[]] when typeErrorCount > > errorWait -> false > │ > | _, [[ message, TypeErrors errors ]] -> > │ > compilerEvent.Trigger (None, Some > (message, TypeErrors > │ > errors)) > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger") _locals > │ > false > │ > | None, [[]] -> true > │ > | _ -> false > │ > ) > │ > |> FSharp.Control.AsyncSeq.tryLast > │ > // |> Async.withCancellationToken ct > │ > |> Async.catch > │ > |> Async.runWithTimeoutAsync timeout > │ > |> Async.StartChild > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > fullPathUri: > │ > %A{fullPathUri}") (fun () -> "") > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code > │ > |} |} > │ > > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = > code |} > │ > let! _fileOpenResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync 60000 > │ > |> Async.map Option.get > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > _fileOpenResult: > │ > %A{_fileOpenResult}") (fun () -> "") > │ > > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let backendId = > │ > match backend with > │ > | Fsharp -> "Fsharp" > │ > | Cuda -> "Python + Cuda" > │ > | Gleam -> "Gleam" > │ > // let buildFileObj = {| BuildFile = {| uri = > fullPathUri; backend = > │ > backendId |} |} > │ > > │ > // let backend = Supervisor.Fsharp > │ > let buildFileArgs = {| uri = fullPathUri; backend = > backendId |} > │ > let buildFileResultAsync = > │ > server1.job_val (fun res -> server1.supervisor > *<+ > │ > SupervisorReq.BuildFile(buildFileArgs,res)) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync timeout > │ > |> Async.map Option.get > │ > > │ > let buildFileResultAsync = async { > │ > let! buildFileResult = buildFileResultAsync > │ > let buildFileResult = > │ > if buildFileResult = "" || buildFileResult > = null > │ > then None > │ > else buildFileResult |> SpiralSm.replace > "\r\n" "\n" |> Some > │ > trace Verbose (fun () -> $"Supervisor.buildFile > / buildFileResult: > │ > %A{buildFileResult}") (fun () -> "") > │ > if buildFileResult.IsSome then > │ > compilerEvent2.Trigger (buildFileResult, > [[]], 0) > │ > return buildFileResult, [[]], 0 > │ > } > │ > > │ > let resultAsync = > │ > outputChild > │ > |> Async.map (fun x -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / outputChild / > │ > x: %A{x}") _locals > │ > match x with > │ > | Some (Ok (Some (outputCode, errors, > typeErrorCount))) -> > │ > let x = > │ > match errors with > │ > | [[ message, TypeErrors errors ]] > -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputChild |> Async.map") _locals > │ > compilerEvent2.Trigger (None, > [[ message, TypeErrors > │ > errors ]], 0) > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputChild |> Async.map") _locals > │ > | _ -> () > │ > outputCode, errors |> List.distinct |> > List.rev, > │ > typeErrorCount > │ > | Some (Error ex) -> > │ > trace Critical (fun () -> > $"Supervisor.buildFile / error: > │ > {ex |> SpiralSm.format_exception} / retry: {retry}") > _locals > │ > None, [[]], 0 > │ > | _ -> None, [[]], 0 > │ > ) > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > before result: > │ > %A{()}") (fun () -> "") > │ > > │ > // let resultSeq = > │ > // [[| buildFileResultAsync; resultAsync |]] > │ > // |> FSharp.Control.AsyncSeq.ofSeqAsync > │ > > │ > > │ > let buildFileResultSeq = [[| buildFileResultAsync > |]] |> > │ > FSharp.Control.AsyncSeq.ofSeqAsync > │ > let resultSeq = [[| resultAsync |]] |> > │ > FSharp.Control.AsyncSeq.ofSeqAsync > │ > > │ > let resultSeq = > │ > [[ outputContentSeq2; buildFileResultSeq; > resultSeq ]] > │ > |> FSharp.Control.AsyncSeq.mergeAll > │ > > │ > let! buildFileResult, result, typeErrorCount = > │ > resultSeq > │ > // |> FSharp.Control.AsyncSeq.collect > (Array.singleton >> > │ > FSharp.Control.AsyncSeq.ofSeq) > │ > |> FSharp.Control.AsyncSeq.collect (fun x -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / ofSeqAsync / > │ > x: %A{x}") _locals > │ > match x with > │ > | Some _, _, _ as x -> [[| x |]] > │ > | _, _ :: _, _ as x -> [[| x |]] > │ > | _ -> [[||]] > │ > |> FSharp.Control.AsyncSeq.ofSeq > │ > ) > │ > |> FSharp.Control.AsyncSeq.tryFirst > │ > |> Async.map Option.get > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > result: %A{result} / > │ > buildFileResult: %A{buildFileResult} / typeErrorCount: > {typeErrorCount}") (fun > │ > () -> "") > │ > > │ > match buildFileResult with > │ > // | None when typeErrorCount > 0 && retry = 0 -> > │ > // trace Verbose (fun () -> > $"Supervisor.buildFile / result: > │ > {result} / retry: {retry} / typeErrorCount: > {typeErrorCount} / fileDir: > │ > {fileDir} / targetDir: {targetDir}") _locals > │ > // return! loop (retry + 1) > │ > | _ -> > │ > let targetDir = workspaceRoot </> "target" > │ > trace Verbose (fun () -> $"Supervisor.buildFile > / retry: {retry} / > │ > typeErrorCount: {typeErrorCount} / fileDir: {fileDir} / > targetDir: {targetDir}") > │ > _locals > │ > if fileDir |> SpiralSm.starts_with targetDir > then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileDeleteObj = {| FileDelete = {| > uris = [[| fileDirUri > │ > |]] |} |} > │ > // let! _fileDeleteResult = fileDeleteObj > |> sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| > fileDirUri |]] |} > │ > let! _fileDeleteResult = > │ > server1.job_null (server1.supervisor > *<+ > │ > SupervisorReq.FileDelete fileDeleteArgs) > │ > |> Async.AwaitTask > │ > () > │ > > │ > let outputPath = fileDir </> outputFileName > │ > return outputPath, buildFileResult, result > │ > } > │ > loop 0 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### SpiralInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type SpiralInput = > │ > | Spi of string * string option > │ > | Spir of string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### persistCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let persistCode (input: {| backend : Backend option; input: > SpiralInput; > │ > packages: string [[]] |}) = async { > │ > let targetDir = workspaceRoot </> "target/spiral_Eval" > │ > > │ > let packagesDir = targetDir </> "packages" > │ > > │ > let hashHex = $"%A{input.backend}%A{input.input}" |> > SpiralCrypto.hash_text > │ > > │ > let packageDir = packagesDir </> hashHex > │ > > │ > let packageDir = > │ > if input.backend = Some Gleam > │ > then packageDir </> "src" > │ > else packageDir > │ > > │ > packageDir |> System.IO.Directory.CreateDirectory |> > ignore > │ > > │ > let moduleName = "main" > │ > > │ > let spirModule, spiModule = > │ > match input.input with > │ > | Spi (_spi, Some _spir) -> true, true > │ > | Spi (_spi, None) -> false, true > │ > | Spir _spir -> true, false > │ > |> fun (spir, spi) -> > │ > (if spir then $"{moduleName}_real*-" else ""), > │ > if spi then moduleName else "" > │ > > │ > let libLinkTargetPath = workspaceRoot </> > "../spiral/lib/spiral" > │ > let libLinkPath = packageDir </> "spiral" > │ > > │ > let packagesModule = > │ > input.packages > │ > |> Array.map (fun package -> > │ > let path = workspaceRoot </> package > │ > let packageName = path |> > System.IO.Path.GetFileName > │ > let libLinkPath = packageDir </> packageName > │ > libLinkPath |> SpiralFileSystem.link_directory > path > │ > $"{packageName}-" > │ > ) > │ > |> String.concat "\n " > │ > > │ > let packageDir' = > │ > if input.packages |> Array.isEmpty > │ > then workspaceRoot </> "../spiral/lib" > │ > else > │ > libLinkPath |> SpiralFileSystem.link_directory > libLinkTargetPath > │ > packageDir > │ > > │ > let spiprojPath = packageDir </> "package.spiproj" > │ > let spiprojCode = > │ > $"""packageDir: {packageDir'} > │ > packages: > │ > |core- > │ > spiral- > │ > {packagesModule} > │ > modules: > │ > {spirModule} > │ > {spiModule} > │ > """ > │ > do! spiprojCode |> > SpiralFileSystem.write_all_text_exists spiprojPath > │ > > │ > let spirPath = packageDir </> $"{moduleName}_real.spir" > │ > let spiPath = packageDir </> $"{moduleName}.spi" > │ > > │ > let spirCode, spiCode = > │ > match input.input with > │ > | Spi (spi, Some spir) -> Some spir, Some spi > │ > | Spi (spi, None) -> None, Some spi > │ > | Spir spir -> Some spir, None > │ > > │ > match spirCode with > │ > | Some spir -> do! spir |> > SpiralFileSystem.write_all_text_exists spirPath > │ > | None -> () > │ > match spiCode with > │ > | Some spi -> do! spi |> > SpiralFileSystem.write_all_text_exists spiPath > │ > | None -> () > │ > > │ > let spiralPath = > │ > match input.input with > │ > | Spi _ -> spiPath > │ > | Spir _ -> spirPath > │ > match input.backend with > │ > | None -> return spiralPath, None > │ > | Some backend -> > │ > let outputFileName = > │ > let fileName = > │ > match input.input with > │ > | Spi _ -> moduleName > │ > | Spir _ -> $"{moduleName}_real" > │ > match backend with > │ > | Fsharp -> $"{fileName}.fsx" > │ > | Cuda -> $"{fileName}.py" > │ > | Gleam -> $"{fileName}.gleam" > │ > let outputPath = packageDir </> outputFileName > │ > if outputPath |> System.IO.File.Exists |> not > │ > then return spiralPath, None > │ > else > │ > let! oldCode = spiralPath |> > SpiralFileSystem.read_all_text_async > │ > if oldCode <> (spiCode |> Option.defaultValue > (spirCode |> > │ > Option.defaultValue "")) > │ > then return spiralPath, None > │ > else > │ > let! outputCode = outputPath |> > │ > SpiralFileSystem.read_all_text_async > │ > return spiralPath, Some (outputPath, > outputCode |> > │ > SpiralSm.replace "\r\n" "\n") > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### buildCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let buildCode backend packages isCache timeout > cancellationToken input = async { > │ > let! mainPath, outputCache = > │ > persistCode {| input = input; backend = Some > backend; packages = > │ > packages |} > │ > match outputCache with > │ > | Some (outputPath, outputCode) when isCache -> return > mainPath, > │ > (outputPath, Some outputCode), [[]] > │ > | _ -> > │ > let! outputPath, outputCode, errors = mainPath |> > buildFile backend > │ > timeout None cancellationToken > │ > return mainPath, (outputPath, outputCode), errors > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl app () = > │ > console.write_line "text" > │ > 1i32 > │ > > │ > inl main () = > │ > app > │ > |> dyn > │ > |> ignore > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 20000 None > │ > |> Async.runWithTimeout 21000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some """let rec closure1 () () : unit = > │ > let v0 : (string -> unit) = System.Console.WriteLine > │ > let v1 : string = "text" > │ > v0 v1 > │ > and closure0 () () : int32 = > │ > let v1 : unit = () > │ > let v2 : (unit -> unit) = closure1() > │ > let v3 : unit = (fun () -> v2 (); v1) () > │ > 1 > │ > let v0 : (unit -> int32) = closure0() > │ > () > │ > """, > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 3.28s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ 00:01:50 v #1 Supervisor.buildFile > / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c > │ > 7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi" > │ > │ 00:01:50 v #2 Supervisor.buildFile > / _fileOpenResult: > │ > <null> > │ > │ 00:01:50 v #3 Supervisor.buildFile > / before result: () > │ > │ 00:01:50 v #4 Supervisor.buildFile > / takeWhileInclusive > │ > / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:50 v #5 Supervisor.buildFile > / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:50 v #6 Supervisor.buildFile > / takeWhileInclusive > │ > / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:51 v #378 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:51 v #380 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:51 v #756 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:51 v #757 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:52 v #1041 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:52 v #1042 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:52 v #1191 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:52 v #1192 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:53 v #1304 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:53 v #1305 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:53 v #1306 > Supervisor.buildFile / buildFileResult: > │ > Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v1 : unit = () > │ > │ let v2 : (unit -> unit) = closure1() > │ > │ let v3 : unit = (fun () -> v2 (); > v1) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ " > │ > │ 00:01:53 v #1307 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v1 : unit = () > │ > │ let v2 : (unit -> unit) = closure1() > │ > │ let v3 : unit = (fun () -> v2 (); > v1) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ [], 0) > │ > │ 00:01:53 v #1308 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v1 : unit = () > │ > │ let v2 : (unit -> unit) = closure1() > │ > │ let v3 : unit = (fun () -> v2 (); > v1) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ [], 0) > │ > │ 00:01:53 v #1309 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v1 : unit = () > │ > │ let v2 : (unit -> unit) = closure1() > │ > │ let v3 : unit = (fun () -> v2 (); > v1) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ " / typeErrorCount: 0 > │ > │ 00:01:53 v #1310 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6 / targetDir: > c:/home/git\polyglot\target > │ > │ Some > │ > │ (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v1 : unit = () > │ > │ let v2 : (unit -> unit) = closure1() > │ > │ let v3 : unit = (fun () -> v2 (); > v1) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "0.3325000000000001\n", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 645.12ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:53 v #1313 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi > │ > │ 00:01:53 v #1314 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi' > │ > │ 00:01:53 v #1315 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c127414de2a2a92d9fd93e > │ > a5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi" > │ > │ 00:01:53 v #1316 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi > │ > │ 00:01:53 v #1317 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:53 v #1318 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:53 v #1549 > Supervisor.buildFile / buildFileResult: > │ > Some "0.3325000000000001 > │ > │ " > │ > │ 00:01:53 v #1550 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > "0.3325000000000001 > │ > │ ", [], 0) > │ > │ 00:01:53 v #1551 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "0.3325000000000001 > │ > │ ", [], 0) > │ > │ 00:01:53 v #1552 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "0.3325000000000001 > │ > │ " / typeErrorCount: 0 > │ > │ 00:01:53 v #1553 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "0.3325000000000001 > │ > │ ", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Cuda [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some @"kernel = r"""""" > │ > """""" > │ > class static_array(): > │ > def __init__(self, length): > │ > self.ptr = [[]] > │ > for _ in range(length): > │ > self.ptr.append(None) > │ > > │ > def __getitem__(self, index): > │ > assert 0 <= index < len(self.ptr), ""The get index > needs to be in > │ > range."" > │ > return self.ptr[[index]] > │ > > │ > def __setitem__(self, index, value): > │ > assert 0 <= index < len(self.ptr), ""The set index > needs to be in > │ > range."" > │ > self.ptr[[index]] = value > │ > > │ > class static_array_list(static_array): > │ > def __init__(self, length): > │ > super().__init__(length) > │ > self.length = 0 > │ > > │ > def __getitem__(self, index): > │ > assert 0 <= index < self.length, ""The get index > needs to be in range."" > │ > return self.ptr[[index]] > │ > > │ > def __setitem__(self, index, value): > │ > assert 0 <= index < self.length, ""The set index > needs to be in range."" > │ > self.ptr[[index]] = value > │ > > │ > def push(self,value): > │ > assert (self.length < len(self.ptr)), ""The length > before pushing has to > │ > be less than the maximum length of the array."" > │ > self.ptr[[self.length]] = value > │ > self.length += 1 > │ > > │ > def pop(self): > │ > assert (0 < self.length), ""The length before > popping has to be greater > │ > than 0."" > │ > self.length -= 1 > │ > return self.ptr[[self.length]] > │ > > │ > def unsafe_set_length(self,i): > │ > assert 0 <= i <= len(self.ptr), ""The new length > has to be in range."" > │ > self.length = i > │ > > │ > class dynamic_array(static_array): > │ > pass > │ > > │ > class dynamic_array_list(static_array_list): > │ > def length_(self): return self.length > │ > > │ > import cupy as cp > │ > import numpy as np > │ > from dataclasses import dataclass > │ > from typing import NamedTuple, Union, Callable, Tuple > │ > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = > │ > int; f32 = float; f64 = float; char = str; string = str > │ > cuda = False > │ > > │ > def main_body(): > │ > return 0.3325000000000001 > │ > > │ > def main(): > │ > r = main_body() > │ > if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so > │ > the `__trap()` calls on the kernel aren't missed. > │ > return r > │ > > │ > if __name__ == '__main__': result = main(); None if result > is None else > │ > print(result) > │ > ", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 709.15ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:54 v #1558 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi > │ > │ 00:01:54 v #1559 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi' > │ > │ 00:01:54 v #1560 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi > │ > │ 00:01:54 v #1561 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d6928a8e761855210 > │ > f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi" > │ > │ 00:01:54 v #1562 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:54 v #1563 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:54 v #1797 > Supervisor.buildFile / buildFileResult: > │ > Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ " > │ > │ 00:01:54 v #1798 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ [], 0) > │ > │ 00:01:54 v #1799 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ [], 0) > │ > │ 00:01:54 v #1800 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ " / typeErrorCount: 0 > │ > │ 00:01:54 v #1801 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8 / targetDir: > c:/home/git\polyglot\target > │ > │ Some > │ > │ (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Gleam [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "pub fn main () { 0.3325000000000001\n }", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 617.92ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:55 v #1808 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi > │ > │ 00:01:55 v #1809 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi' > │ > │ 00:01:55 v #1810 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi > │ > │ 00:01:55 v #1811 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/9fee147a19a3a90ab5113d > │ > 3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi" > │ > │ 00:01:55 v #1812 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:55 v #1813 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:55 v #2047 > Supervisor.buildFile / buildFileResult: > │ > Some "pub fn main () { 0.3325000000000001 > │ > │ }" > │ > │ 00:01:55 v #2048 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () > { 0.3325000000000001 > │ > │ }", [], 0) > │ > │ 00:01:55 v #2049 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "pub fn main () { 0.3325000000000001 > │ > │ }", [], 0) > │ > │ 00:01:55 v #2050 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "pub fn main () { 0.3325000000000001 > │ > │ }" / typeErrorCount: 0 > │ > │ 00:01:55 v #2051 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "pub fn main () { > 0.3325000000000001 > │ > │ }", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.01 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "0.33332500000000004\n", > │ > [[]] > │ > ) > │ > ) > │ > // |> _assertEqual None > │ > // |> fun x -> printfn $"{x.ToDisplayString ()}" > │ > > │ > ── [ 664.65ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:55 v #2058 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi > │ > │ 00:01:55 v #2059 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi' > │ > │ 00:01:55 v #2060 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi > │ > │ 00:01:55 v #2061 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39 > │ > a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi" > │ > │ 00:01:55 v #2062 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:55 v #2063 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:55 v #2299 > Supervisor.buildFile / buildFileResult: > │ > Some "0.33332500000000004 > │ > │ " > │ > │ 00:01:55 v #2300 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > "0.33332500000000004 > │ > │ ", [], 0) > │ > │ 00:01:55 v #2301 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "0.33332500000000004 > │ > │ ", [], 0) > │ > │ 00:01:55 v #2302 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "0.33332500000000004 > │ > │ " / typeErrorCount: 0 > │ > │ 00:01:55 v #2303 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4 / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "0.33332500000000004 > │ > │ ", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > "" > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot find `main` in file main." ]] > │ > ) > │ > ) > │ > > │ > ── [ 610.20ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:56 v #2312 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:01:56 v #2313 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi' > │ > │ 00:01:56 v #2314 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:01:56 v #2315 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d > │ > 8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi" > │ > │ 00:01:56 v #2316 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:56 v #2317 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:56 v #2552 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:01:56 v #2553 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:01:56 v #2560 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot find `main` in file main., > FatalError "Cannot > │ > find `main` in file main.")) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi' > │ > │ 00:01:56 v #2561 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot find `main` in file main.", > │ > │ { > │ > │ "FatalError": "Cannot find `main` > in file main." > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:01:56 v #2571 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot find `main` in file > main.", > │ > │ FatalError "Cannot find > `main` in file main.")], > │ > 0))) > │ > │ 00:01:56 v #2573 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot find `main` in file main.", > │ > │ FatalError "Cannot find `main` in > file main.")], 0) > │ > │ 00:01:56 v #2574 > Supervisor.buildFile / result: > │ > [("Cannot find `main` in file main.", > │ > │ FatalError "Cannot find `main` in file > main.")] / > │ > buildFileResult: None / typeErrorCount: 0 > │ > │ 00:01:56 v #2575 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot find `main` in file > main."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > 1i32 / 0i32 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "An attempt to divide by zero has been detected > at compile time." ]] > │ > ) > │ > ) > │ > > │ > ── [ 768.69ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:56 v #2576 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:01:56 v #2577 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi' > │ > │ 00:01:56 v #2578 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:01:56 v #2579 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab265 > │ > 89e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi" > │ > │ 00:01:56 v #2580 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:56 v #2581 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:57 v #2814 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:01:57 v #2815 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:01:57 v #2816 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((An attempt to divide by zero has > been detected at > │ > compile time., TracedError > │ > │ { message = "An attempt to divide by > zero has been detected > │ > at compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, column: 5 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi' > │ > │ 00:01:57 v #2817 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "An attempt to divide by zero has > been detected at > │ > compile time.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "An attempt to divide > by zero has been > │ > detected at compile time.", > │ > │ "trace": [ > │ > │ "Error trace on line: 1, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 2, > column: 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:01:57 v #2819 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("An attempt to divide by zero > has been detected at > │ > compile time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by > zero has been > │ > detected at compile time." > │ > │ trace = > │ > │ ["Error trace on line: > 1, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 2, column: 5 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:01:57 v #2820 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("An attempt to divide by zero has > been detected at compile > │ > time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by zero > has been detected at > │ > compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, > column: 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:01:57 v #2821 > Supervisor.buildFile / result: [("An > │ > attempt to divide by zero has been detected at compile > time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by zero has > been detected at > │ > compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, column: > 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:01:57 v #2822 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2 / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["An attempt to divide by > zero has been detected > │ > at compile time."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real () > │ > () > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot apply a forall with a term." ]] > │ > ) > │ > ) > │ > > │ > ── [ 606.93ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:57 v #2823 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:57 v #2824 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:01:57 v #2825 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:57 v #2826 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec > │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ > │ 00:01:57 v #2827 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:57 v #2828 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:57 v #3061 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:01:57 v #3062 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:01:57 v #3063 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot apply a forall with a term., > TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:01:57 v #3064 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot apply a forall with a > term.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "Cannot apply a > forall with a term.", > │ > │ "trace": [ > │ > │ "Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:57 v #3066 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot apply a forall with a > term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a > forall with a term." > │ > │ trace = > │ > │ ["Error trace on line: > 2, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 4, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 7, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:01:57 v #3067 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:01:57 v #3068 > Supervisor.buildFile / result: > │ > [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:01:57 v #3069 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot apply a forall with > a term."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real `i32 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "The main function should not have a forall." ]] > │ > ) > │ > ) > │ > > │ > ── [ 596.73ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:58 v #3070 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:01:58 v #3071 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi' > │ > │ 00:01:58 v #3072 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:01:58 v #3073 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/0ba44c42df309b790acdf4 > │ > f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi" > │ > │ 00:01:58 v #3074 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:58 v #3075 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:58 v #3308 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:01:58 v #3309 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:01:58 v #3310 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((The main function should not have a > forall., TracedError > │ > { message = "The main function should not have a forall." > │ > │ trace = [] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi' > │ > │ 00:01:58 v #3311 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "The main function should not have a > forall.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "The main function > should not have a > │ > forall.", > │ > │ "trace": [] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:01:58 v #3313 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("The main function should not > have a forall.", > │ > │ TracedError { message = "The > main function should > │ > not have a forall." > │ > │ trace = [] })], > 0))) > │ > │ 00:01:58 v #3314 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("The main function should not have a > forall.", > │ > │ TracedError { message = "The main > function should not have > │ > a forall." > │ > │ trace = [] })], 0) > │ > │ 00:01:58 v #3315 > Supervisor.buildFile / result: [("The > │ > main function should not have a forall.", > │ > │ TracedError { message = "The main > function should not have > │ > a forall." > │ > │ trace = [] })] / > buildFileResult: None / > │ > typeErrorCount: 0 > │ > │ 00:01:58 v #3316 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["The main function should > not have a forall."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real () > │ > () > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot apply a forall with a term." ]] > │ > ) > │ > ) > │ > > │ > ── [ 632.81ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:58 v #3317 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:58 v #3318 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:01:58 v #3319 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:58 v #3320 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec > │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ > │ 00:01:58 v #3321 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:58 v #3322 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:59 v #3551 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:01:59 v #3552 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:01:59 v #3553 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot apply a forall with a term., > TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:01:59 v #3554 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot apply a forall with a > term.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "Cannot apply a > forall with a term.", > │ > │ "trace": [ > │ > │ "Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:01:59 v #3556 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot apply a forall with a > term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a > forall with a term." > │ > │ trace = > │ > │ ["Error trace on line: > 2, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 4, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 7, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:01:59 v #3557 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:01:59 v #3558 > Supervisor.buildFile / result: > │ > [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:01:59 v #3559 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot apply a forall with > a term."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > 1 + "" > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Constraint satisfaction error. > │ > Got: string > │ > Fails to satisfy: number" > │ > ]] > │ > ) > │ > ) > │ > > │ > ── [ 455.93ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:01:59 v #3560 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:01:59 v #3561 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi' > │ > │ 00:01:59 v #3562 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:01:59 v #3563 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ > │ 00:01:59 v #3564 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:01:59 v #3565 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:01:59 v #3650 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number, TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi' > │ > │ 00:01:59 v #3654 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 8, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 10, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number" > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:01:59 v #3661 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })) > │ > │ 00:01:59 v #3663 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:01:59 v #3668 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { > character = 10 > │ > │ line > = 1 }), > │ > │ "Constraint > satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0))) > │ > │ 00:01:59 v #3670 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:01:59 v #3673 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0) > │ > │ 00:01:59 v #3676 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0) > │ > │ 00:01:59 v #3679 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:01:59 v #3680 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:01:59 v #3682 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some (None, ["main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number"]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > x + y > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Unbound variable: x. > │ > Unbound variable: y." > │ > ]] > │ > ) > │ > ) > │ > > │ > ── [ 457.01ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:00 v #3810 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:00 v #3811 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi' > │ > │ 00:02:00 v #3812 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:00 v #3813 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ > │ 00:02:00 v #3814 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:00 v #3815 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:00 v #3856 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y., TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi' > │ > │ 00:02:00 v #3857 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 4, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 5, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Unbound variable: x." > │ > │ ], > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 8, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 9, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Unbound variable: y." > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:00 v #3862 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = > 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = > 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) > │ > │ 00:02:00 v #3863 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:02:00 v #3867 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { > character = 5 > │ > │ line > = 1 }), "Unbound > │ > variable: x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { > character = 9 > │ > │ line > = 1 }), "Unbound > │ > variable: y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0))) > │ > │ 00:02:00 v #3868 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:02:00 v #3871 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0) > │ > │ 00:02:00 v #3875 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0) > │ > │ 00:02:00 v #3877 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:02:00 v #3878 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:02:00 v #3880 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some (None, ["main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl rec main () = main""" > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Recursive metavariables are not allowed. A metavar cannot > be unified with a type > │ > that has itself. > │ > Got: 'a > │ > Expected: () -> 'a" > │ > ]] > │ > ) > │ > ) > │ > // |> _assertEqual None > │ > // |> fun x -> printfn $"{x.ToDisplayString ()}" > │ > > │ > ── [ 479.49ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:00 v #4060 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:00 v #4061 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi' > │ > │ 00:02:00 v #4062 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:00 v #4063 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ > │ 00:02:00 v #4064 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:00 v #4065 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:00 v #4108 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a, TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are not > allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi' > │ > │ 00:02:00 v #4110 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 18, > │ > │ "line": 0 > │ > │ }, > │ > │ { > │ > │ "character": 22, > │ > │ "line": 0 > │ > │ } > │ > │ ], > │ > │ "Recursive metavariables are > not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a" > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:00 v #4112 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) > │ > │ 00:02:00 v #4113 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:02:00 v #4118 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { > character = 22 > │ > │ line > = 0 }), > │ > │ "Recursive > metavariables are not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0))) > │ > │ 00:02:00 v #4119 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:02:00 v #4121 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0) > │ > │ 00:02:00 v #4124 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0) > │ > │ 00:02:00 v #4126 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:02:00 v #4127 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:02:00 v #4129 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some > │ > │ (None, > │ > │ ["main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a"]) > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getFileTokenRange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFileTokenRange port cancellationToken path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > let lines = code |> SpiralSm.split "\n" > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let port = port |> Option.defaultWith getCompilerPort > │ > // let! serverPort, _errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > // use _ = disposable > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code |} > │ > |} > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = code > |} > │ > let! _fileOpenResult = > │ > server2.job_null (server2.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let fileTokenRangeArgs = > │ > {| > │ > uri = fullPathUri > │ > range = > │ > {| > │ > line = 0 > │ > character = 0 > │ > |}, > │ > {| > │ > line = lines.Length - 1 > │ > character = lines.[[lines.Length - > 1]].Length > │ > |} > │ > |} > │ > // let! fileTokenRangeResult = > │ > // fileTokenRangeObj > │ > // |> sendObj serverPort > │ > // |> Async.withCancellationToken ct > │ > > │ > // let fileTokenRangeArgs = {| uri = fullPathUri; > backend = backendId |} > │ > let! fileTokenRangeResult = > │ > server2.job_val (fun res -> server2.supervisor *<+ > │ > SupervisorReq.FileTokenRange(fileTokenRangeArgs,res)) > │ > |> Async.AwaitTask > │ > > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > if fileDir |> SpiralSm.starts_with (workspaceRoot </> > "target") then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > // let fileDeleteObj = {| FileDelete = {| uris = > [[| fileDirUri |]] |} > │ > |} > │ > // let! _fileDeleteResult = fileDeleteObj |> > sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| fileDirUri |]] > |} > │ > let! _fileDeleteResult = > │ > server2.job_null (server2.supervisor *<+ > SupervisorReq.FileDelete > │ > fileDeleteArgs) > │ > |> Async.AwaitTask > │ > () > │ > > │ > return fileTokenRangeResult |> > FSharp.Json.Json.deserialize<int array> |> > │ > Some > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getCodeTokenRange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCodeTokenRange cancellationToken code = async { > │ > let! mainPath, _ = > │ > persistCode {| input = Spi (code, None); backend = > None; packages = > │ > [[||]] |} > │ > > │ > let codeDir = mainPath |> > System.IO.Path.GetDirectoryName > │ > let tokensPath = codeDir </> "tokens.json" > │ > let! tokens = async { > │ > if tokensPath |> System.IO.File.Exists |> not > │ > then return None > │ > else > │ > let! text = tokensPath |> > SpiralFileSystem.read_all_text_async > │ > > │ > return > │ > if text.Length > 2 > │ > then text |> > FSharp.Json.Json.deserialize<int array> |> Some > │ > else None > │ > } > │ > match tokens with > │ > | Some tokens -> > │ > return tokens |> Some > │ > | None -> return! mainPath |> getFileTokenRange None > cancellationToken > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """inl main () = ()""" > │ > |> getCodeTokenRange None > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; > │ > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > │ > > │ > ── [ 715.05ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """inl main () = 1i32""" > │ > |> getCodeTokenRange None > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; > │ > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > │ > > │ > ── [ 6.20s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getFileHoverAt > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFileHoverAt > │ > port > │ > cancellationToken > │ > path > │ > (position : {| line: int; character: int |}) > │ > = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > let lines = code |> SpiralSm.split "\n" > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let port = port |> Option.defaultWith getCompilerPort > │ > // let! serverPort, _errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > // use _ = disposable > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code |} > │ > |} > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = code > |} > │ > let! _fileOpenResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let hoverAtArgs = > │ > {| > │ > uri = fullPathUri > │ > pos = position > │ > |} > │ > > │ > let! hoverAtResult = > │ > server1.job_val (fun res -> server1.supervisor *<+ > │ > SupervisorReq.HoverAt(hoverAtArgs,res)) > │ > |> Async.AwaitTask > │ > > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > if fileDir |> SpiralSm.starts_with (workspaceRoot </> > "target") then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > // let fileDeleteObj = {| FileDelete = {| uris = > [[| fileDirUri |]] |} > │ > |} > │ > // let! _fileDeleteResult = fileDeleteObj |> > sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| fileDirUri |]] > |} > │ > let! _fileDeleteResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileDelete > │ > fileDeleteArgs) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync 60000 > │ > |> Async.map Option.get > │ > () > │ > > │ > return hoverAtResult |> Some > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getCodeHoverAt > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCodeHoverAt cancellationToken code position = async > { > │ > let! mainPath, _ = > │ > persistCode {| input = Spi (code, None); backend = > None; packages = > │ > [[||]] |} > │ > > │ > let codeDir = mainPath |> > System.IO.Path.GetDirectoryName > │ > let filePath = codeDir </> "hover.json" > │ > let! output = async { > │ > if filePath |> System.IO.File.Exists |> not > │ > then return None > │ > else > │ > let! text = filePath |> > SpiralFileSystem.read_all_text_async > │ > > │ > return > │ > if text.Length > 2 > │ > then text |> Some > │ > else None > │ > } > │ > match output with > │ > | Some output -> > │ > return output |> Some > │ > | None -> return! getFileHoverAt None cancellationToken > mainPath position > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; > character = 4 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "() -> ()") > │ > > │ > ── [ 433.96ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "() -> ()" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; > character = 0 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some null) > │ > > │ > ── [ 409.91ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some null > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl rec main () = main""" {| line = > 0; character = 8 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "forall 'a. () -> 'a") > │ > > │ > ── [ 428.06ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "forall 'a. () -> 'a" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = 1""" {| line = 0; > character = 4 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "forall 'a {number}. () -> 'a") > │ > > │ > ── [ 428.49ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "forall 'a {number}. () -> 'a" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | Build_File of string * string > │ > | File_Token_Range of string * string > │ > | File_Hover_At of string * string * int * int > │ > | Execute_Command of string > │ > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > │ > | [[<Argu.ArguAttributes.Unique>]] Port of int > │ > | [[<Argu.ArguAttributes.Unique>]] Parallel > │ > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Build_File _ -> nameof Build_File > │ > | File_Token_Range _ -> nameof File_Token_Range > │ > | File_Hover_At _ -> nameof File_Hover_At > │ > | Execute_Command _ -> nameof Execute_Command > │ > | Timeout _ -> nameof Timeout > │ > | Port _ -> nameof Port > │ > | Parallel -> nameof Parallel > │ > | Exit_On_Error-> nameof Exit_On_Error > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 160.06ms - return value ] > ───────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] > [--build-file <string> <string>] > │ > │ [--file-token-range > <string> <string>] > │ > │ [--file-hover-at > <string> <string> <int> > │ > <int>] > │ > │ [--execute-command > <string>] [--timeout > │ > <int>] [--port <int>] > │ > │ [--parallel] > [--exit-on-error] > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --build-file <string> <string> > │ > │ Build_File > │ > │ --file-token-range <string> <string> > │ > │ > File_Token_Range > │ > │ --file-hover-at <string> <string> > <int> <int> > │ > │ File_Hover_At > │ > │ --execute-command <string> > │ > │ > Execute_Command > │ > │ --timeout <int> Timeout > │ > │ --port <int> Port > │ > │ --parallel Parallel > │ > │ --exit-on-error Exit_On_Error > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > SpiralTrace.TraceLevel.US0_1 |> set_trace_level > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let buildFileActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.Build_File) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.Build_File (inputPath, outputPath) > -> Some (inputPath, > │ > outputPath) > │ > | _ -> None > │ > ) > │ > > │ > let fileTokenRangeActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.File_Token_Range) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.File_Token_Range (inputPath, > outputPath) -> Some > │ > (inputPath, outputPath) > │ > | _ -> None > │ > ) > │ > > │ > let fileHoverAtActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.File_Hover_At) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.File_Hover_At (inputPath, > outputPath, line, character) > │ > -> > │ > Some (inputPath, outputPath, line, > character) > │ > | _ -> None > │ > ) > │ > > │ > let executeCommandActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.Execute_Command) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.Execute_Command command -> Some > command > │ > | _ -> None > │ > ) > │ > > │ > let timeout = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Timeout) with > │ > | Some [[ Arguments.Timeout timeout ]] -> timeout > │ > | _ -> 60002 * 60 * 24 > │ > > │ > let port = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Port) with > │ > | Some [[ Arguments.Port port ]] -> Some port > │ > | _ -> None > │ > > │ > let isParallel = argsMap |> Map.containsKey (nameof > Arguments.Parallel) > │ > > │ > let isExitOnError = argsMap |> Map.containsKey (nameof > │ > Arguments.Exit_On_Error) > │ > > │ > async { > │ > let port = > │ > port > │ > |> Option.defaultWith getCompilerPort > │ > let struct (localToken, disposable) = > │ > SpiralThreading.new_disposable_token None > │ > // let! serverPort, _errors, compilerToken, > disposable = awaitCompiler > │ > port (Some localToken) > │ > let serverPort = port > │ > let struct (compilerToken, disposable) = > │ > SpiralThreading.new_disposable_token None > │ > use _ = disposable > │ > > │ > let buildFileAsync = > │ > buildFileActions > │ > |> List.map (fun (inputPath, outputPath) -> > async { > │ > let! _outputPath, outputCode, errors = > │ > let backend = > │ > if outputPath |> SpiralSm.ends_with > ".fsx" > │ > then Fsharp > │ > elif outputPath |> > SpiralSm.ends_with ".py" > │ > then Cuda > │ > elif outputPath |> > SpiralSm.ends_with ".gleam" > │ > then Gleam > │ > else failwith $"Supervisor.main / > invalid backend / > │ > outputPath: {outputPath}" > │ > let isReal = inputPath |> > SpiralSm.ends_with ".spir" > │ > inputPath |> buildFile backend timeout > (Some serverPort) > │ > None > │ > > │ > errors > │ > |> List.map snd > │ > |> List.iter (fun error -> > │ > trace Critical (fun () -> $"main / > error: {error |> > │ > serializeObj}") _locals > │ > ) > │ > > │ > match outputCode with > │ > | Some outputCode -> > │ > do! outputCode |> > SpiralFileSystem.write_all_text_exists > │ > outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let fileTokenRangeAsync = > │ > fileTokenRangeActions > │ > |> List.map (fun (inputPath, outputPath) -> > async { > │ > let! tokenRange = inputPath |> > getFileTokenRange (Some > │ > serverPort) None > │ > match tokenRange with > │ > | Some tokenRange -> > │ > do! tokenRange |> > FSharp.Json.Json.serialize |> > │ > SpiralFileSystem.write_all_text_exists outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let fileHoverAtAsync = > │ > fileHoverAtActions > │ > |> List.map (fun (inputPath, outputPath, line, > character) -> async { > │ > let! hoverAt = > │ > getFileHoverAt > │ > (Some serverPort) > │ > None > │ > inputPath > │ > {| line = line; character = > character |} > │ > match hoverAt with > │ > | Some hoverAt -> > │ > do! hoverAt |> > FSharp.Json.Json.serialize |> > │ > SpiralFileSystem.write_all_text_exists outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let executeCommandAsync = > │ > executeCommandActions > │ > |> List.map (fun command -> async { > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options (fun x > -> > │ > { x with > │ > l0 = command > │ > l1 = Some compilerToken > │ > } > │ > ) > │ > |> > SpiralRuntime.execute_with_options_async > │ > > │ > trace Debug (fun () -> $"main / > executeCommand / exitCode: > │ > {exitCode} / command: {command}") _locals > │ > > │ > if isExitOnError && exitCode <> 0 > │ > then SpiralRuntime.current_process_kill () > │ > > │ > return exitCode > │ > }) > │ > > │ > return! > │ > [[| buildFileAsync; fileTokenRangeAsync; > fileHoverAtAsync; > │ > executeCommandAsync |]] > │ > |> Seq.collect id > │ > |> fun x -> > │ > if isParallel > │ > then Async.Parallel (x, float > System.Environment.ProcessorCount > │ > * 0.51 |> ceil |> int) > │ > else Async.Sequential x > │ > |> Async.map Array.sum > │ > } > │ > |> Async.runWithTimeout timeout > │ > |> Option.defaultValue 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 106.68ms - return value ] > ───────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ 00:02:27 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 168813 } > │ 00:02:27 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:29 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb to html > │ 00:02:29 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:02:29 v #7 ! validate(nb) > │ 00:02:29 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:02:29 v #9 ! return _pygments_highlight( > │ 00:02:31 v #10 ! [NbConvertApp] Writing 606452 bytes to > c:\home\git\polyglot\apps\spiral\Supervisor.dib.html > │ 00:02:31 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 864 } > │ 00:02:31 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 864 } > │ 00:02:31 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:31 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:02:31 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:02:31 d #16 spiral.run / dib / { exit_code = 0; > result_length = 169736 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Supervisor.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Supervisor.dib > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / > code.Length: 40313 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Restored > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 267 ms). > │ 00:00:12 v #7 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #8 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10600,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #9 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11420,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #10 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12350,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #11 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13016,71): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:16 v #12 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:16 v #13 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:32 v #14 > Supervisor -> > c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\linux-x64\Supe > rvisor.dll > │ 00:00:33 v #15 > Supervisor -> > C:\home\git\polyglot\apps\spiral\dist\ > │ 00:00:34 d #16 runtime.execute_with_options_async / { > exit_code = 0; output_length = 3503; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:34 d #17 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:34 v #18 > Determining projects to restore... > │ 00:00:35 v #19 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:35 v #20 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:35 v #21 > Total time taken: 0 milliseconds > │ 00:00:35 v #22 > Restored > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 257 ms). > │ 00:00:47 v #23 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:47 v #24 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10600,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:47 v #25 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11420,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:47 v #26 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12350,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:48 v #27 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13016,71): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:50 v #28 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:50 v #29 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:01:07 v #30 > Supervisor -> > c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\win-x64\Superv > isor.dll > │ 00:01:08 v #31 > Supervisor -> > C:\home\git\polyglot\apps\spiral\dist\ > │ 00:01:08 d #32 runtime.execute_with_options_async / { > exit_code = 0; output_length = 3501; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/Eval.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Eval.dib" > --output-path "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Eval (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > │ > > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > │ > > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > │ > > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > │ > rp.Json.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > │ > 0/System.Management.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > │ > 2.0/FSharpx.Collections.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > │ > .dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > │ > " > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > │ > ons.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > │ > dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > │ > dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.2/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.2/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > │ > t9.0/Microsoft.Extensions.Logging.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > │ > > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > │ > > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > │ > ons.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 1.83m - diagnostics ] > ───────────────────────────────────────────────────── > │ > │ input.fsx (10087,85)-(10087,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (10600,85)-(10600,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (11420,43)-(11420,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (12350,43)-(12350,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (13016,71)-(13016,74) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open spiral_compiler > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 9.38s - diagnostics ] > ───────────────────────────────────────────────────── > │ > │ input.fsx (211,19)-(211,29) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > │ input.fsx (212,19)-(212,29) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > open Microsoft.AspNetCore.SignalR.Client > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open System > │ > open System.Collections.Generic > │ > open System.IO > │ > open System.Text > │ > open System.Threading > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## mapErrors > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline mapErrors (severity, errors, lastTopLevelIndex) > allCode = > │ > let allCodeLineLength = > │ > allCode |> SpiralSm.split "\n" |> Array.length > │ > > │ > errors > │ > |> List.map (fun (_, error) -> > │ > match error with > │ > | FatalError message -> > │ > ( > │ > severity, message, 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |> List.singleton > │ > | TracedError data -> > │ > data.trace > │ > |> List.truncate 5 > │ > |> List.append [[ data.message ]] > │ > |> List.map (fun message -> > │ > ( > │ > severity, message, 0, ("", (0, 0), (0, > 0)) > │ > ) > │ > ) > │ > | PackageErrors data > │ > | TokenizerErrors data > │ > | ParserErrors data > │ > | TypeErrors data -> > │ > data.errors > │ > |> List.filter (fun ((rangeStart, _), _) -> > │ > trace Debug (fun () -> $"Eval.mapErrors / > rangeStart.line: > │ > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} > / allCodeLineLength: > │ > {allCodeLineLength} / filtered: {rangeStart.line > > allCodeLineLength}") _locals > │ > rangeStart.line > allCodeLineLength > │ > ) > │ > |> List.map (fun ((rangeStart, rangeEnd), > message) -> > │ > ( > │ > severity, > │ > message, > │ > 0, > │ > ( > │ > (data.uri |> > System.IO.Path.GetFileName), > │ > ( > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeStart.line - > allCodeLineLength - 2 > │ > | _ -> rangeStart.line - > allCodeLineLength), > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeStart.character - 4 > │ > | _ -> rangeStart.character) > │ > ), > │ > ( > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeEnd.line - > allCodeLineLength - 2 > │ > | _ -> rangeEnd.line - > allCodeLineLength), > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeEnd.character - 4 > │ > | _ -> rangeEnd.character) > │ > ) > │ > ) > │ > ) > │ > ) > │ > ) > │ > |> List.collect id > │ > |> List.toArray > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### workspaceRoot > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### targetDir > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let targetDir = workspaceRoot </> "target/spiral_Eval" > │ > [[ targetDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> not > then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## allCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allCode = "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### allPackages > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allPackages : string [[]] = [[||]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## allCodeReal > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allCodeReal = "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## traceToggle > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable traceToggle = false > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## startTokenRangeWatcher > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline startTokenRangeWatcher () = > │ > if [[ "dotnet-repl" ]] |> List.contains > spiral_compiler.assemblyName > │ > then new_disposable (fun () -> ()) > │ > else > │ > let tokensDir = targetDir </> "tokens" > │ > > │ > [[ tokensDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> > not then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > let stream, disposable = FileSystem.watchDirectory > (fun _ -> false) > │ > tokensDir > │ > > │ > try > │ > let existingFilesChild = > │ > tokensDir > │ > |> System.IO.Directory.GetDirectories > │ > |> Array.map (fun codeDir -> async { > │ > try > │ > let tokensPath = codeDir </> > "tokens.json" > │ > if tokensPath |> File.Exists |> not > then > │ > let spiralCodePath = codeDir > </> "main.spi" > │ > let spiralRealCodePath = > codeDir </> > │ > "main_real.spir" > │ > let spiralExists = > spiralCodePath |> > │ > System.IO.File.Exists > │ > let spiralRealExists = > spiralRealCodePath |> > │ > System.IO.File.Exists > │ > if spiralExists |> not && > spiralRealExists |> not > │ > then do! codeDir |> > │ > SpiralFileSystem.delete_directory_async |> Async.Ignore > │ > else > │ > let! tokens = > │ > if spiralExists then > spiralCodePath else > │ > spiralRealCodePath > │ > |> > Supervisor.getFileTokenRange None None > │ > match tokens with > │ > | Some tokens -> > │ > do! > │ > tokens > │ > |> > FSharp.Json.Json.serialize > │ > |> > SpiralFileSystem.write_all_text_async > │ > tokensPath > │ > | None -> > │ > trace Verbose (fun () > -> > │ > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: > None") _locals > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.startTokenRangeWatcher > │ > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") > _locals > │ > }) > │ > |> Async.Parallel > │ > |> Async.Ignore > │ > > │ > let streamAsyncChild = > │ > stream > │ > |> > FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > │ > -> > │ > match event with > │ > | FileSystem.FileSystemChange.Changed > (codePath, _) > │ > when [[ "main.spi"; > "main_real.spir" ]] > │ > |> List.contains > (System.IO.Path.GetFileName > │ > codePath) > │ > -> > │ > async { > │ > let hashDir = codePath |> > │ > System.IO.Directory.GetParent > │ > let hashHex = hashDir.Name > │ > let codePath = tokensDir </> > codePath > │ > let tokensPath = tokensDir </> > hashHex </> > │ > "tokens.json" > │ > // do! Async.Sleep 30 > │ > let rec loop retry = async { > │ > let! tokens = codePath |> > │ > Supervisor.getFileTokenRange None None > │ > if retry = 3 || tokens <> > Some [[||]] > │ > then return tokens, retry > │ > else > │ > trace Debug > │ > (fun () -> > $"Eval.startTokenRangeWatcher > │ > / iterAsyncParallel") > │ > (fun () -> $"retry: > {retry} / tokens: > │ > %A{tokens}") > │ > do! Async.Sleep 30 > │ > return! loop (retry + > 1) > │ > } > │ > let! tokens, retries = loop 1 > │ > match tokens with > │ > | Some tokens -> > │ > do! > │ > tokens > │ > |> > FSharp.Json.Json.serialize > │ > |> > SpiralFileSystem.write_all_text_exists > │ > tokensPath > │ > | None -> > │ > trace Debug > │ > (fun () -> > $"Eval.startTokenRangeWatcher / > │ > iterAsyncParallel") > │ > (fun () -> $"retries: > {retries} / tokens: > │ > {tokens}") > │ > } > │ > |> Async.retryAsync 3 > │ > |> Async.map (Result.toOption >> > Option.defaultValue ()) > │ > | _ -> () |> Async.init > │ > ) > │ > > │ > async { > │ > do! Async.Sleep 3000 > │ > existingFilesChild |> Async.StartImmediate > │ > streamAsyncChild |> Async.Start > │ > } > │ > |> Async.Start > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.startTokenRangeWatcher / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > > │ > disposable > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## startCommandsWatcher > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let startCommandsWatcher (uriServer : string) = > │ > let commandsDir = targetDir </> "eval_commands" > │ > let commandHistoryDir = targetDir </> > "eval_command_history" > │ > [[ commandsDir; commandHistoryDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> not > then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > Directory.EnumerateFiles commandsDir |> Seq.iter > File.Delete > │ > > │ > let stream, disposable = > │ > commandsDir > │ > |> FileSystem.watchDirectory (function > │ > | FileSystem.FileSystemChange.Created _ -> true > │ > | _ -> false > │ > ) > │ > > │ > let connection = > HubConnectionBuilder().WithUrl(uriServer).Build() > │ > connection.StartAsync() |> Async.AwaitTask |> > Async.Start > │ > // let _ = connection.On<string>("ServerToClientMsg", > fun x -> > │ > // printfn $"ServerToClientMsg: '{x}'" > │ > // ) > │ > > │ > stream > │ > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun > (ticks, event) -> async { > │ > let _locals () = $"ticks: {ticks} / event: {event} > / {_locals ()}" > │ > trace Verbose (fun () -> "Eval.startCommandsWatcher > / > │ > iterAsyncParallel") _locals > │ > > │ > match event with > │ > | FileSystem.FileSystemChange.Created (path, Some > json) -> > │ > try > │ > let fullPath = commandsDir </> path > │ > let! result = > │ > connection.InvokeAsync<string>("ClientToServerMsg", json) > |> Async.AwaitTask > │ > let commandHistoryPath = commandHistoryDir > </> path > │ > do! fullPath |> > SpiralFileSystem.move_file_async > │ > commandHistoryPath |> Async.Ignore > │ > if result |> SpiralSm.trim |> String.length > > 0 then > │ > let resultPath = commandHistoryDir </> > │ > $"{Path.GetFileNameWithoutExtension path}_result.json" > │ > do! result |> > SpiralFileSystem.write_all_text_async > │ > resultPath > │ > with ex -> > │ > let _locals () = $"ex: {ex |> > SpiralSm.format_exception} / > │ > {_locals ()}" > │ > trace Critical (fun () -> > "Eval.startCommandsWatcher / > │ > iterAsyncParallel") _locals > │ > | _ -> () > │ > }) > │ > |> Async.StartChild > │ > |> Async.Ignore > │ > |> Async.Start > │ > > │ > new_disposable (fun () -> > │ > disposable.Dispose () > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## prepareSpiral > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let prepareSpiral rawCellCode lines = > │ > let lastBlock = > │ > lines > │ > |> Array.tryFindBack (fun line -> > │ > line |> String.length > 0 > │ > && line.[[0]] <> ' ' > │ > ) > │ > > │ > let hasMain = > │ > lastBlock > │ > |> Option.exists (fun line -> > │ > line |> SpiralSm.starts_with "inl main " > │ > || line |> SpiralSm.starts_with "let main " > │ > ) > │ > > │ > if hasMain > │ > then rawCellCode, None > │ > else > │ > let lastTopLevelIndex, _ = > │ > (lines |> Array.indexed, (None, false)) > │ > ||> Array.foldBack (fun (i, line) > (lastTopLevelIndex, finished) -> > │ > // trace Verbose (fun () -> > $"Eval.prepareSpiral / i: {i} / > │ > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / > finished: {finished}") > │ > _locals > │ > match line with > │ > | _ when finished -> lastTopLevelIndex, > true > │ > | "" -> lastTopLevelIndex, false > │ > | line when > │ > line |> SpiralSm.starts_with " " > │ > || line |> SpiralSm.starts_with "// " > -> lastTopLevelIndex, > │ > false > │ > | line when > │ > line |> SpiralSm.starts_with "open " > │ > || line |> SpiralSm.starts_with > "prototype " > │ > || line |> SpiralSm.starts_with > "instance " > │ > || line |> SpiralSm.starts_with "type " > │ > || line |> SpiralSm.starts_with "union > " > │ > || line |> SpiralSm.starts_with > "nominal " -> > │ > lastTopLevelIndex, true > │ > | line when > │ > line |> SpiralSm.starts_with "inl " > │ > || line |> SpiralSm.starts_with "and " > │ > || line |> SpiralSm.starts_with "let " > -> > │ > let m = > │ > > System.Text.RegularExpressions.Regex.Match ( > │ > line, > │ > @"^(?:and +)?(inl|let) > +((?:[[{( > │ > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? > *[[\w\d']]*\))?| > │ > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! > +function)" > │ > ) > │ > trace Verbose (fun () -> > $"Eval.prepareSpi / m: '{m}' / > │ > m.Groups.Count: {m.Groups.Count}") _locals > │ > if m.Groups.Count = 3 > │ > then Some i, false > │ > else lastTopLevelIndex, true > │ > | _ -> Some i, false > │ > ) > │ > let code = > │ > match lastTopLevelIndex with > │ > | Some lastTopLevelIndex -> > │ > lines > │ > |> Array.mapi (fun i line -> > │ > match i with > │ > | i when i < lastTopLevelIndex -> line > │ > | i when i = lastTopLevelIndex -> > $"\nlet main () =\n > │ > {line}" > │ > | _ when line |> SpiralSm.trim = "" -> > "" > │ > | _ -> $" {line}" > │ > ) > │ > |> SpiralSm.concat "\n" > │ > | None -> $"{rawCellCode}\n\ninl main () = > ()\n" > │ > code, lastTopLevelIndex > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## processSpiralOutput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let processSpiralOutput > │ > (props : {| > │ > printCode: bool > │ > traceLevel: TraceLevel > │ > builderCommands: string array > │ > lastTopLevelIndex: int option > │ > backend: Supervisor.Backend > │ > cancellationToken: _ > │ > spiralErrors: _ > │ > code: string > │ > outputPath: string > │ > isReal: bool > │ > |}) > │ > = async { > │ > let inline _trace (fn : unit -> string) = > │ > if props.traceLevel = Verbose > │ > then trace Info (fun () -> > $"Eval.processSpiralOutput / props: {props |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > {fn ()}") _locals > │ > else fn () |> System.Console.WriteLine > │ > > │ > if props.printCode && props.backend <> Supervisor.Cuda > && props.backend <> > │ > Supervisor.Gleam then > │ > let ext = props.outputPath |> > System.IO.Path.GetExtension > │ > _trace (fun () -> if props.builderCommands.Length > > 0 then > │ > $"{ext}:\n{props.code}\n" else props.code) > │ > > │ > let workspaceRootExternal = > │ > let currentDir = > System.IO.Directory.GetCurrentDirectory () |> > │ > SpiralSm.to_lower > │ > let workspaceRoot = workspaceRoot |> > SpiralSm.to_lower > │ > if currentDir |> SpiralSm.starts_with workspaceRoot > │ > then None > │ > else Some workspaceRoot > │ > > │ > let! spiralBuilderResults = > │ > match props.builderCommands, > props.lastTopLevelIndex with > │ > | [[||]], _ | _, None -> [[||]] |> Async.init > │ > | builderCommands, _ -> > │ > builderCommands > │ > |> Array.map (fun builderCommand -> > │ > let path = > │ > workspaceRoot </> > │ > > $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf > │ > fix ()}" > │ > |> System.IO.Path.GetFullPath > │ > let commands = > │ > if props.backend = Supervisor.Fsharp > │ > && ( > │ > builderCommand |> > SpiralSm.starts_with "rust" > │ > || builderCommand |> > SpiralSm.starts_with > │ > "typescript" > │ > || builderCommand |> > SpiralSm.starts_with "python" > │ > ) > │ > then [[| $"{path} fable --fs-path > \"{props.outputPath}\" > │ > --command \"{builderCommand}\"" |]] > │ > elif props.backend = Supervisor.Cuda > │ > && builderCommand |> > SpiralSm.starts_with "cuda" > │ > then [[| $"{path} {builderCommand} > --py-path > │ > \"{props.outputPath}\"" |]] > │ > elif props.backend = Supervisor.Gleam > │ > && builderCommand |> > SpiralSm.starts_with "gleam" > │ > then [[| $"{path} {builderCommand} > --gleam-path > │ > \"{props.outputPath}\"" |]] > │ > else [[||]] > │ > builderCommand, commands > │ > ) > │ > |> Array.filter (fun (_, commands) -> > commands.Length > 0) > │ > |> Array.collect (fun (builderCommand, > commands) -> > │ > commands > │ > |> Array.map (fun command -> async { > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options > (fun x -> > │ > { x with > │ > l0 = command > │ > l1 = > props.cancellationToken > │ > l2 = [[| > │ > "AUTOMATION", > spiral_compiler.assemblyName = > │ > "dotnet-repl" |> string > │ > "TRACE_LEVEL", $"%A{if > props.printCode then > │ > props.traceLevel else Info}" > │ > |]] > │ > l6 = workspaceRootExternal > │ > } > │ > ) > │ > |> > SpiralRuntime.execute_with_options_async > │ > trace Debug > │ > (fun () -> > $"Eval.processSpiralOutput / spiral cli") > │ > (fun () -> $"exitCode: {exitCode} / > builderCommand: > │ > {builderCommand} / command: {command} / result: {result |> > SpiralSm.ellipsis_end > │ > 400} / {_locals ()}") > │ > return > │ > if exitCode = 0 > │ > then {| code = result; eval = > false; builderCommand = > │ > builderCommand |} |> Ok > │ > else result |> Error > │ > }) > │ > ) > │ > |> Async.Parallel > │ > > │ > let hasEval = > │ > props.backend = Supervisor.Fsharp > │ > && props.builderCommands |> Array.exists (fun x -> > x |> > │ > SpiralSm.starts_with "fsharp") > │ > > │ > let outputResult = > │ > if props.builderCommands.Length > 0 && not hasEval > │ > then None > │ > else > │ > let code = > │ > if props.builderCommands.Length > 1 > │ > then > │ > let header = "System.Console.WriteLine > \".fsx output:\"\n" > │ > $"{header}{props.code}" > │ > else props.code > │ > Some (Ok [[ {| code = code; eval = true; > builderCommand = "" |} ]]) > │ > > │ > match outputResult, spiralBuilderResults with > │ > | Some outputResult, [[||]] -> > │ > return outputResult, [[||]] > │ > | None, [[||]] -> > │ > return Ok [[ {| code = "()"; eval = true; > builderCommand = "" |} ]], > │ > [[||]] > │ > | _, spiralBuilderResults -> > │ > try > │ > let spiralResults = > │ > match outputResult with > │ > | Some (Ok code) -> > │ > spiralBuilderResults > │ > |> Array.append (code |> List.map Ok |> > List.toArray) > │ > | _ -> spiralBuilderResults > │ > let codes = > │ > spiralResults > │ > |> Array.map (fun spiralBuilderResult' -> > │ > let commandResult, errors = > │ > match spiralBuilderResult' with > │ > | Ok result when result.eval = > false -> > │ > let result' = > │ > result.code > │ > |> > │ > FSharp.Json.Json.deserialize<Map<string,string>> > │ > let result = > │ > match result' |> > Map.tryFind "command_result" > │ > with > │ > | Some result'' -> > │ > result'' > │ > |> > │ > FSharp.Json.Json.deserialize<Map<string,string>> > │ > |> Map.add > "builderCommand" > │ > result.builderCommand > │ > | None -> Map.empty > │ > result, [[||]] > │ > | Ok result when result.eval = true > -> > │ > let result = > │ > [[ > │ > "extension", "fsx" > │ > "code", result.code > │ > "output", "" > │ > ]] > │ > |> Map.ofList > │ > result, [[||]] > │ > | Error error -> > │ > Map.empty, > │ > [[| > │ > ( > │ > TraceLevel.Critical, > │ > $"Eval.processSpiralOutput / evalResult error / errors[[0]] > / outputPath: > │ > {props.outputPath} / builderCommands: > %A{props.builderCommands} / > │ > spiralBuilderResult': %A{spiralBuilderResult'} / error: > %A{error}", 0, ("", (0, > │ > 0), (0, 0)) > │ > ) > │ > |]] > │ > | _ -> > │ > Map.empty, [[||]] > │ > > │ > if errors |> Array.isEmpty |> not > │ > then Error (Exception > $"Eval.processSpiralOutput / > │ > evalResult errors / Exception / commandResult: > %A{commandResult}"), errors > │ > else > │ > let extension = > commandResult.[["extension"]] > │ > let code = commandResult.[["code"]] > │ > let output = > commandResult.[["output"]] > │ > let builderCommand = > │ > commandResult > │ > |> Map.tryFind "builderCommand" > │ > |> Option.defaultValue "" > │ > > │ > let backendInfo = > │ > match props.backend, > builderCommand with > │ > | Supervisor.Fsharp, > builderCommand > │ > when builderCommand |> > SpiralSm.contains " " -> > │ > $" ({builderCommand})" > │ > | Supervisor.Fsharp, _ -> "" > │ > | _ -> $" ({props.backend})" > │ > > │ > let eval = output = "" && extension > = "fsx" > │ > > │ > if props.printCode && not eval > │ > then _trace (fun () -> > │ > $""".{extension}{backendInfo}:{'\n'}{code}""") > │ > > │ > trace Debug > │ > (fun () -> > $"Eval.processSpiralOutput / result") > │ > (fun () -> $"builderCommand: > {builderCommand} / > │ > extension: {extension} / commandResult: {commandResult |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ > {_locals ()}") > │ > > │ > let code = > │ > if props.printCode > │ > || spiralResults.Length > 1 > │ > || > props.builderCommands.Length > 1 > │ > then > │ > if eval > │ > then code > │ > else > │ > let header = > $".{extension} > │ > output{backendInfo}:\n" > │ > $"""{if output |> > SpiralSm.contains "\n" > │ > then "\n" else ""}{header}{output}""" > │ > elif eval > │ > then code > │ > else output > │ > Ok {| code = code; eval = eval; > builderCommand = > │ > builderCommand |}, [[||]] > │ > ) > │ > trace Debug > │ > (fun () -> $"Eval.processSpiralOutput / > codes") > │ > (fun () -> > │ > let props = {| props with > cancellationToken = None |} > │ > $"codes: {codes |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults > |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > spiralBuilderResults: > │ > {spiralBuilderResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end > │ > 400} / props: {props |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} > │ > / {_locals ()}") > │ > return > │ > (((Ok [[]]), [[||]]), codes) > │ > ||> Array.fold (fun (acc_code, acc_errors) > (code, errors) -> > │ > match code, acc_code with > │ > | Ok code, Ok acc_code -> > │ > let errors = > │ > acc_errors > │ > |> Array.append errors > │ > |> Array.append > props.spiralErrors > │ > let errors = > │ > if errors |> Array.isEmpty > │ > then errors > │ > else > │ > let code = $"%A{code}" > │ > errors > │ > |> Array.append [[| > │ > TraceLevel.Critical, > │ > $"Eval.processSpiralOutput / errors / errors[[-1]] / > outputPath: > │ > {props.outputPath} / builderCommands: > %A{props.builderCommands} / code: {code |> > │ > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > │ > |]] > │ > Ok (code :: acc_code), errors > │ > | Error ex, _ > │ > | _, Error ex -> > │ > Error (Exception > $"Eval.processSpiralOutput / -1 / > │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} > / ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > acc_errors |> Array.append errors > │ > ) > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.processSpiralOutput / try 2 ex / > │ > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |>│ > SpiralSm.format_exception}") _locals > │ > return > │ > Error (Exception $"Eval.processSpiralOutput > / try 2 ex / > │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} > / ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.processSpiralOutput / try 2 > │ > ex / errors[[0]] / spiralBuilderResults: > %A{spiralBuilderResults} / ex: {ex |> > │ > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## tryGetPropertyValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let tryGetPropertyValue (propertyName: string) (obj: obj) = > │ > let objType = obj.GetType () > │ > let propertyInfo = propertyName |> objType.GetProperty > │ > if propertyInfo <> null > │ > then propertyInfo.GetValue (obj, null) |> Some > │ > else None > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## evalAsync > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec evalAsync > │ > retry > │ > (props : {| > │ > rawCellCode: _ > │ > lines: _ > │ > isReal: _ > │ > builderCommands: _ array > │ > isCache: _ > │ > timeout: _ > │ > cancellationToken: _ > │ > printCode: _ > │ > traceLevel: _ > │ > fsi_eval: _ > │ > |}) > │ > = async { > │ > try > │ > let cellCode, lastTopLevelIndex = prepareSpiral > props.rawCellCode > │ > props.lines > │ > let newAllCode = > │ > if props.isReal > │ > then $"{allCodeReal}\n\n{cellCode}" > │ > else $"{allCode}\n\n{cellCode}" > │ > > │ > let buildBackends = > │ > if props.builderCommands.Length = 0 > │ > then [[| Supervisor.Fsharp |]] > │ > else > │ > props.builderCommands > │ > |> Array.map (fun x -> > │ > if x |> SpiralSm.starts_with "cuda" > │ > then Supervisor.Cuda > │ > elif x |> SpiralSm.starts_with "gleam" > │ > then Supervisor.Gleam > │ > else Supervisor.Fsharp > │ > ) > │ > |> Array.distinct > │ > > │ > trace Verbose > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"lastTopLevelIndex: > {lastTopLevelIndex} / > │ > builderCommands: %A{props.builderCommands} / buildBackends: > %A{buildBackends} / > │ > isReal: {props.isReal} / {_locals ()}") > │ > > │ > let! buildCodeResults = > │ > buildBackends > │ > |> Array.map (fun backend -> async { > │ > let! result = > │ > if props.isReal > │ > then Supervisor.Spir newAllCode > │ > else > │ > Supervisor.Spi > │ > (newAllCode, if allCodeReal = > "" then None else Some > │ > allCodeReal) > │ > |> Supervisor.buildCode backend > allPackages props.isCache > │ > props.timeout props.cancellationToken > │ > return backend, result > │ > }) > │ > |> Async.Parallel > │ > |> Async.catch > │ > |> Async.runWithTimeoutAsync props.timeout > │ > > │ > match buildCodeResults with > │ > | Some (Ok buildCodeResults) -> > │ > let! result, errors = > │ > ((Ok [[]], [[||]]), buildCodeResults) > │ > ||> Async.fold (fun acc buildCodeResult -> > async { > │ > match buildCodeResult with > │ > | backend, (_, (outputPath, Some code), > spiralErrors) -> > │ > let spiralErrors = > │ > allCode |> mapErrors (Warning, > spiralErrors, > │ > lastTopLevelIndex) > │ > let! result = > │ > processSpiralOutput > │ > {| > │ > printCode = > props.printCode > │ > traceLevel = > props.traceLevel > │ > builderCommands = > props.builderCommands > │ > lastTopLevelIndex = > lastTopLevelIndex > │ > backend = backend > │ > cancellationToken = > props.cancellationToken > │ > spiralErrors = > spiralErrors > │ > code = code > │ > outputPath = outputPath > │ > isReal = props.isReal > │ > |} > │ > match result, acc with > │ > | (Ok code, errors), (Ok acc_code, > acc_errors) -> > │ > return Ok (acc_code @ code), > acc_errors |> > │ > Array.append errors > │ > | (Error ex, errors), _ | _, (Error > ex, errors) -> > │ > return > │ > Error (Exception > $"Eval.evalAsync / > │ > processSpiralOutput / Exception / buildCodeResult: > %A{buildCodeResult |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > errors |> Array.append > errors > │ > | _, (_, _, errors) when errors |> > List.isEmpty |> not -> > │ > return errors.[[0]] |> fst |> > Exception |> Error, > │ > allCode |> mapErrors > (TraceLevel.Critical, errors, > │ > lastTopLevelIndex) > │ > | _ -> return acc > │ > }) > │ > let cancellationToken = defaultArg > props.cancellationToken > │ > System.Threading.CancellationToken.None > │ > match result, errors with > │ > | Ok code, [[||]] -> > │ > let code, eval = > │ > code > │ > |> List.map (fun code -> > │ > if code.eval > │ > then None, Some code.code > │ > else Some code.code, None > │ > ) > │ > |> List.unzip > │ > let code = code |> List.choose id > │ > let eval = eval |> List.choose id > │ > > │ > trace Debug > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"eval: {eval |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / code: {code |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / {_locals ()}") > │ > > │ > let ch, errors = > │ > match eval, code with > │ > | [[]], [[]] -> > │ > Choice2Of2 (Exception > $"Eval.evalAsync / eval=[[]] / > │ > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: > %A{code}"), errors > │ > | [[ eval ]], [[]] -> > │ > let ch, errors2 = props.fsi_eval > eval cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, e2, > e3, _) -> > │ > // (e1, e2, e3, ("", (0, > 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > | [[]], _ -> > │ > let code = code |> List.rev |> > String.concat "\n\n" > │ > let code = > │ > if props.printCode > │ > then $"\"\"\"{code}\n\n\"\"\"" > │ > else $"\"\"\"{code}\n\"\"\"" > │ > let ch, errors2 = props.fsi_eval > code cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, e2, > e3, _) -> > │ > // (e1, e2, e3, ("", (0, > 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > | _ -> > │ > let code, errors = > │ > ((Ok (code |> List.rev), > [[||]]), eval) > │ > ||> List.fold (fun (acc, > acc_errors) eval -> > │ > match acc with > │ > | Error ch -> Error ch, > acc_errors > │ > | Ok acc -> > │ > let ch, errors = > props.fsi_eval eval > │ > cancellationToken > │ > let errors = > │ > errors > │ > // |> Array.map > (fun (e1, e2, e3, _) -> > │ > // (e1, e2, e3, > ("", (0, 0), (0, > │ > 0))) > │ > // ) > │ > |> Array.append > acc_errors > │ > match ch with > │ > | Choice1Of2 v -> > │ > let v = > │ > v > │ > |> > tryGetPropertyValue > │ > "ReflectionValue" > │ > |> Option.map > (fun x -> $"%A{x}") > │ > |> > Option.defaultValue "" > │ > Ok (v :: acc), > errors > │ > | Choice2Of2 ex -> > │ > trace Critical (fun > () -> > │ > $"Eval.evalAsync / fsi_eval fold Choice error / > buildCodeResults: > │ > %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > │ > Error ch, errors > │ > ) > │ > match code with > │ > | Error ch -> ch, errors > │ > | Ok code -> > │ > let code = > │ > code > │ > |> List.filter ((<>) "") > │ > |> String.concat "\n\n" > │ > > │ > let code = > │ > if > props.builderCommands.Length > 0 && > │ > eval.Length = 0 > │ > then code > │ > elif code |> > SpiralSm.contains "\n\n\n" > │ > then $"{code}\n\n" > │ > else $"{code}\n" > │ > > │ > let code = > │ > if props.printCode > │ > then > $"\"\"\"{code}\n\n\n\"\"\"" > │ > else > $"\"\"\"{code}\n\"\"\"" > │ > let ch, errors2 = > props.fsi_eval code > │ > cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, > e2, e3, _) -> > │ > // (e1, e2, e3, ("", > (0, 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > match ch with > │ > | Choice1Of2 v -> > │ > if props.isReal > │ > then allCodeReal <- newAllCode > │ > else allCode <- newAllCode > │ > return Ok(v), errors > │ > | Choice2Of2 ex -> > │ > return > │ > Error (Exception $"Eval.evalAsync / > -2 / Exception / ex: > │ > {ex |> SpiralSm.format_exception} / buildCodeResults: > {buildCodeResults |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"), > │ > errors > │ > | Ok code, errors -> > │ > return > │ > Error (Exception "Eval.evalAsync / > errors / > │ > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > │ > errors > │ > | Error ex, errors -> > │ > let ex = ex |> SpiralSm.format_exception > │ > if retry <= 3 && > │ > (ex |> SpiralSm.contains "Expected one > of: inl, let, union, > │ > nominal, prototype, type, instance, and, open") > │ > || (ex |> SpiralSm.contains "Unexpected > end of block past > │ > this token.") > │ > then return! evalAsync (retry + 1) props > │ > else > │ > return > │ > Error (Exception $"Eval.evalAsync / > -1 / Exception / ex: > │ > {ex} / buildCodeResults: {buildCodeResults |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 1500}"), > │ > errors > │ > | Some (Error ex) -> > │ > trace Critical (fun () -> $"Eval.evalAsync / > buildCodeResults Error > │ > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > return > │ > Error (Exception $"Eval.evalAsync / > buildCodeResults Error / > │ > Exception / buildCodeResults: %A{buildCodeResults} / ex: > {ex |> > │ > SpiralSm.format_exception}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.evalAsync / buildCodeResults > │ > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} > / buildCodeResults: > │ > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > | _ -> > │ > return > │ > Error (Exception $"Eval.evalAsync / > buildCodeResults / Exception > │ > / buildCodeResults: %A{buildCodeResults}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.evalAsync / buildCodeResults > │ > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, > ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > with ex -> > │ > trace Critical (fun () -> $"Eval.evalAsync / try 1 > ex / ex: {ex |> > │ > SpiralSm.format_exception} / lines: %A{props.lines}") > _locals > │ > return > │ > Error (Exception $"Eval.evalAsync / try 1 ex / > Exception / ex: {ex > │ > |> SpiralSm.format_exception} / lines: %A{props.lines}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, $"Eval.evalAsync / > try 1 ex / > │ > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / > lines: %A{props.lines}", > │ > 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## eval > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline eval > │ > (fsi_eval: > │ > string > │ > -> System.Threading.CancellationToken > │ > -> Choice<'a, Exception> * (TraceLevel * string * > int * (string * (int * > │ > int) * (int * int))) array) > │ > (cancellationToken: > Option<System.Threading.CancellationToken>) > │ > (code: string) > │ > = > │ > trace Verbose > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"code: {code |> SpiralSm.ellipsis_end > 400} / {_locals ()}") > │ > > │ > let rawCellCode = > │ > code |> SpiralSm.replace "\r\n" "\n" > │ > > │ > let lines = rawCellCode |> SpiralSm.split "\n" > │ > > │ > if lines |> Array.exists (fun line -> line |> > SpiralSm.starts_with "#r " && > │ > line |> SpiralSm.ends_with "\"") then > │ > let cancellationToken = defaultArg > cancellationToken > │ > System.Threading.CancellationToken.None > │ > let ch, errors = fsi_eval code cancellationToken > │ > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / > ch: %A{ch} / errors: > │ > %A{errors}") _locals > │ > match ch with > │ > | Choice1Of2 v -> Ok(v), errors > │ > | Choice2Of2 ex -> Error(ex), errors > │ > else > │ > let builderCommands = > │ > lines > │ > |> Array.choose (fun line -> > │ > if line |> SpiralSm.starts_with "///! " > │ > then line |> SpiralSm.split "///! " |> > Array.tryItem 1 > │ > else None > │ > ) > │ > > │ > let packages = > │ > lines > │ > |> Array.choose (fun line -> > │ > if line |> SpiralSm.starts_with "//// > package=" > │ > then line |> SpiralSm.split "=" |> > Array.skip 1 |> > │ > SpiralSm.concat "" |> Some > │ > else None > │ > ) > │ > > │ > allPackages <- packages |> Array.append allPackages > |> Array.distinct > │ > > │ > let timeout = > │ > lines > │ > |> Array.tryPick (fun line -> > │ > if line |> SpiralSm.starts_with "//// > timeout=" > │ > then line |> SpiralSm.split "=" |> > Array.tryItem 1 |> Option.map > │ > int > │ > else None > │ > ) > │ > |> Option.defaultValue (60003 * 60 * 24) > │ > > │ > let boolArg def command = > │ > lines > │ > |> Array.tryPick (fun line -> > │ > let text = $"//// {command}" > │ > match line.[[0..text.Length-1]], > line.[[text.Length..]] with > │ > | head, "" when head = text -> > │ > Some true > │ > | head, _ when head = text -> > │ > line |> SpiralSm.split "=" |> > Array.tryItem 1 |> Option.map > │ > ((<>) "false") > │ > | _ -> None > │ > ) > │ > |> Option.defaultValue def > │ > > │ > let printCode = "print_code" |> boolArg false > │ > let isTraceToggle = "trace_toggle" |> boolArg false > │ > let isTrace = "trace" |> boolArg false > │ > let isCache = "cache" |> boolArg false > │ > let isReal = "real" |> boolArg false > │ > let timeout_continue = "timeout_continue" |> > boolArg false > │ > > │ > if isTraceToggle > │ > then traceToggle <- not traceToggle > │ > > │ > let oldLevel = get_trace_level () > │ > let traceLevel = > │ > if isTrace || traceToggle > │ > then Verbose > │ > else Info > │ > traceLevel > │ > |> to_trace_level > │ > |> set_trace_level > │ > use _ = (new_disposable (fun () -> > │ > oldLevel |> set_trace_level > │ > )) > │ > > │ > evalAsync 1 > │ > {| > │ > rawCellCode = rawCellCode > │ > lines = lines > │ > isReal = isReal > │ > builderCommands = builderCommands > │ > isCache = isCache > │ > timeout = timeout > │ > cancellationToken = cancellationToken > │ > printCode = printCode > │ > traceLevel = traceLevel > │ > fsi_eval = fsi_eval > │ > |} > │ > |> Async.runWithTimeout timeout > │ > |> (fun x -> > │ > match x with > │ > | Some ((Ok x), a) -> Some ((Ok x), a) > │ > | Some ((Error x), a) -> > │ > trace Info (fun () -> $"Eval.eval / error / > exception: > │ > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> > "") > │ > Some ((Error x), a) > │ > | _ -> None > │ > ) > │ > |> Option.defaultWith (fun () -> ( > │ > let lines = lines |> SpiralSm.concat (string > '\n') |> > │ > SpiralSm.ellipsis_end 1500 > │ > in > │ > Error (Exception $"Eval.eval / > Async.runWithTimeout / Exception / > │ > timeout: {timeout} / timeout_continue: {timeout_continue} / > lines: {lines}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, $"Eval.eval / > Async.runWithTimeout / > │ > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", > (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > )) > │ 00:02:23 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 55116 } > │ 00:02:23 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:24 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb to html > │ 00:02:24 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:02:24 v #7 ! validate(nb) > │ 00:02:25 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:02:25 v #9 ! return _pygments_highlight( > │ 00:02:26 v #10 ! [NbConvertApp] Writing 460205 bytes to > c:\home\git\polyglot\apps\spiral\Eval.dib.html > │ 00:02:26 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 852 } > │ 00:02:26 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 852 } > │ 00:02:26 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:26 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:02:26 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:02:26 d #16 spiral.run / dib / { exit_code = 0; > result_length = 56027 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib > │ polyglot/apps/spiral/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block > > ── [ 2.27m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Async.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:20 d #2 runtime.execute_with_options_async / { > exit_code = 0; output_length = 19529; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:20 d #1 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Async.dib --retries 3 > │ 00:00:20 d #3 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:39 d #4 runtime.execute_with_options_async / { > exit_code = 0; output_length = 11796; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:39 d #2 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > AsyncSeq.dib --retries 3 > │ 00:00:39 d #5 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Common.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:57 d #6 runtime.execute_with_options_async / { > exit_code = 0; output_length = 5506; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:57 d #3 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Common.dib --retries 3 > │ 00:00:57 d #7 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = None } } > │ 00:01:14 d #8 runtime.execute_with_options_async / { > exit_code = 0; output_length = 4477; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = None } } > │ 00:01:14 d #4 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3 > │ 00:01:14 d #9 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:55 d #10 runtime.execute_with_options_async / { > exit_code = 0; output_length = 42540; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:55 d #5 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > FileSystem.dib --retries 3 > │ 00:01:55 d #11 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Runtime.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:15 d #12 runtime.execute_with_options_async / { > exit_code = 0; output_length = 9236; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:15 d #6 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Runtime.dib --retries 3 > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Async.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > CommonFSharp.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > FileSystem.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Runtime.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > AsyncSeq.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Common.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Runtime.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Common.dib > │ 00:00:00 d #4 parseDibCode / output: Fs / file: > FileSystem.dib > │ 00:00:00 d #5 parseDibCode / output: Fs / file: > CommonFSharp.dib > │ 00:00:00 d #5 parseDibCode / output: Fs / file: > AsyncSeq.dib > │ 00:00:00 d #5 parseDibCode / output: Fs / file: > Async.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../deps/spiral/apps/wasm/build.ps1 -SkipFsx 1 } | Invoke-Block > > ── [ 1.92m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > spiral_wasm / hash: / code.Length: 233276 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral_wasm > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps > /polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps > / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / > Language: rs / Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @eugene-g > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 147ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 9148ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ spiral/apps/wasm/build.ps1 / path: > C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs > │ spiral/apps/wasm/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / > $env:CI:'' > │ Compiling spiral_wasm v0.0.1 > (/mnt/c/home/git/spiral/apps/wasm) > │ Finished `release` profile [optimized] target(s) in > 1m 36s > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../lib/math/build.ps1 } | Invoke-Block > > ── [ 2.20m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "math.dib", "--retries", "1"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/lib/math/math.dib", "--output-path", > "c:/home/git/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/lib/math/math.dib" > --output-path "c:/home/git/polyglot/lib/math/math.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # math > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > open testing > │ > open rust.rust_operators > │ > open rust > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal complex t = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype > │ > num_complex_Complex<'T> = class end" > │ > $'' : $'num_complex_Complex<`t>' > │ > ) > │ > > │ > inl complex forall t. ((re : t), (im : t)) : complex t = > │ > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex > │ > > │ > complex (0f64, 0f64) > │ > |> sm'.format' > │ > |> sm'.from_std_string > │ > |> _assert_eq "0+0i" > │ > > │ > ── [ 6.84s - return value ] > ──────────────────────────────────────────────────── > │ > │ __assert_eq / actual: "0+0i" / expected: > "0+0i" > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## re > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl re forall t. (c : complex t) : t = > │ > !\\(c, $'"$0.re"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## im > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl im forall t. (c : complex t) : t = > │ > !\\(c, $'"$0.im"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_unbox > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_unbox forall t. (c : complex t) = > │ > re c, im c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (~.^) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (~.^) c = complex c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_eq > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_eq forall t. (a : complex t) (b : complex t) : > bool = > │ > !\\((a, b), $'"$0 == $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.=) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.=) a b = complex_eq a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## equable complex > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > instance equable complex t = complex_eq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_add > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_add forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 + $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.+) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.+) a b = complex_add a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_sub > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_sub forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 - $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.-) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.-) a b = complex_sub a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_mult > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_mult forall t. (a : complex t) (b : complex t) > : complex t = > │ > !\\((a, b), $'"$0 * $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.*) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.*) a b = complex_mult a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_div > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_div forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 / $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (./) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (./) a b = complex_div a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## powc > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl powc forall t. (s : complex t) (c : complex t) : > complex t = > │ > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.**) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.**) a b = powc b a > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_sin > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_sin forall t. (c : complex t) : complex t = > │ > !\\(c, $'"$0.sin()"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## conj > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl conj forall t. (c : complex t) : complex t = > │ > !\\(c, $'"$0.conj()"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## zeta > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl zeta log (gamma : complex f64 -> complex f64) (s : > complex f64) : complex > │ > f64 = > │ > inl rec zeta count gamma s = > │ > if log then > │ > !\\((count, s), $'"println\!(\\\"zeta / count: > {:?} / s: {:?}\\\", > │ > $0, $1)"') > │ > if re s > 1 then > │ > (.^(0, 0), (am.init 10000i32 id : a i32 _)) > │ > ||> am.fold fun acc n => > │ > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) > │ > else > │ > inl gamma_term = gamma (.^(1, 0) .- s) > │ > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> > complex_sin > │ > inl one_minus_s = .^(1 - re s, -(im s)) > │ > inl mirror_term = > │ > if re one_minus_s <= 1 > │ > then .^(0, 0) > │ > else > │ > if count <= 3 > │ > then zeta (count + 1) gamma one_minus_s > │ > else one_minus_s > │ > inl reflection_formula = > │ > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term > .* gamma_term .* > │ > mirror_term > │ > reflection_formula > │ > join zeta 0i32 gamma s > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## bound > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal bound t = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype > pyo3_Bound<'T> = class > │ > end" > │ > $'' : $'pyo3_Bound<`t>' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## python > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal python = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype > pyo3_Python = class end" > │ > $'' : $'pyo3_Python' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pymodule > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pymodule = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype > pyo3_types_PyModule > │ > = class end" > │ > $'' : $'pyo3_types_PyModule' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pyany > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pyany = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype > pyo3_PyAny = class end" > │ > $'' : $'pyo3_PyAny' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pyerr > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pyerr = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype > pyo3_PyErr = class end" > │ > $'' : $'pyo3_PyErr' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## eval > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl module_from_code (py : python) (code : string) : _ > (bound pymodule) _ = > │ > inl py = join py > │ > inl code = code |> sm'.to_std_string |> > sm'.new_c_string > │ > inl empty = "" |> sm'.to_std_string |> sm'.new_c_string > │ > !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, > &!empty, &!empty)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl use_pyanymethods () = > │ > global "Fable.Core.RustInterop.emitRustExpr () > \");\nuse > │ > pyo3::prelude::PyAnyMethods;\n//\"" > │ > > │ > inl getattr (attr : string) (module : bound pymodule) : _ > (bound pyany) _ = > │ > inl attr = join attr > │ > inl attr = attr |> sm'.as_str > │ > inl module = join module > │ > use_pyanymethods () > │ > !\\(attr, $'"!module.getattr($0)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl call forall t. (args : t) (module : bound pyany) : _ > (bound pyany) _ = > │ > inl args = join args > │ > inl module = join module > │ > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, > ((*!args).0, *(*!args).1), > │ > None)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl extract forall t. (result : bound pyany) : _ t _ = > │ > inl result = join result > │ > use_pyanymethods () > │ > !\($'"!result.extract()"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ > f64) sm'.std_string = > │ > inl code = > │ > code > │ > |> module_from_code py > │ > |> resultm.unwrap' > │ > inl fn = > │ > code > │ > |> getattr "fn" > │ > |> resultm.unwrap' > │ > > │ > fn > │ > |> call args > │ > |> resultm.try' > │ > |> extract > │ > |> resultm.try' > │ > |> complex > │ > |> Ok > │ > |> resultm.box > │ > > │ > inl call1_ log py s code = > │ > inl code = join (a code : _ i32 _) |> sm'.concat_array > "\n" > │ > > │ > inl s = new_pair (re s) (im s) > │ > inl args = new_pair log s > │ > > │ > eval py code args > │ > > │ > inl call1_ log name py s line = > │ > inl s = join s > │ > join > │ > ;[[ > │ > $'$"import sys"' > │ > $'$"import traceback"' > │ > $'$"import re"' > │ > $'$"count = 0"' > │ > $'$"memory_address_pattern = re.compile(r\' at > 0x[[0-9a-fA-F]]+\')"' > │ > $'$"def trace_calls(frame, event, arg):"' > │ > $'$" global count"' > │ > $'$" count += 1"' > │ > $'$" if count < 200:"' > │ > $'$" try:"' > │ > $'$" args = {{ k: v for k, v in > frame.f_locals.items() if > │ > frame.f_code.co_name \!= \'make_mpc\' and k not in > [[\'ctx\']] and not > │ > callable(v) }}"' > │ > $'$" args_str = \', \'.join([[ > │ > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', > repr(v))}}\\\" for k, > │ > v in args.items() ]])"' > │ > $'$" print(f\\\"{{event}}({!name}) / > f_code.co_name: > │ > {{frame.f_code.co_name}} / f_locals: {{args_str}} / > f_lineno: {{frame.f_lineno}} > │ > / f_code.co_filename: > │ > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} > / f_back.f_lineno: > │ > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno > }} / > │ > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None > else > │ > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: > │ > {{re.sub(memory_address_pattern, \' at 0x<?>\', > repr(arg))}}\\\", flush=True)"' > │ > $'$" except ValueError as e:"' > │ > $'$" print(f\'{!name} / e: {{e}}\', > flush=True)"' > │ > $'$" return trace_calls"' > │ > $'$"import mpmath"' > │ > $'$"def fn(log, s):"' > │ > $'$" global count"' > │ > $'$" if log:"' > │ > $'$" print(f\'{!name} / s: {{s}} / > count: {{count}}\', > │ > flush=True)"' > │ > $'$" s = complex(*s)"' > │ > $'$" try:"' > │ > $'$" if log: sys.settrace(trace_calls)"' > │ > line > │ > $'$" if log:"' > │ > $'$" sys.settrace(None)"' > │ > $'$" print(f\'{!name} / result: > {{s}} / count: > │ > {{count}}\', flush=True)"' > │ > $'$" except ValueError as e:"' > │ > $'$" if s.real == 1:"' > │ > $'$" s = complex(float(\'inf\'), > 0)"' > │ > $'$" return (s.real, s.imag)"' > │ > ]] > │ > |> call1_ log py s > │ > > │ > inl gamma_ log py s = > │ > call1_ log "gamma_" py s $'$" s = > mpmath.gamma(s)"' > │ > > │ > inl zeta_ log py s = > │ > call1_ log "zeta_" py s $'$" s = > mpmath.zeta(s)"' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## run_test > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl run_test log (fn : (complex f64 -> complex f64) * > (complex f64 -> complex > │ > f64) -> ()) = > │ > inl fn_ (py : python) : resultm.result' () pyerr = > │ > inl nan () = > │ > !\($'"f64::NAN"') > │ > inl gamma__ = fun (s : complex f64) => > │ > inl result = gamma_ log py s > │ > if log then > │ > inl s = join s > │ > !\($'"println\!(\\\"gamma__ / s: {:?} / > result: {:?}\\\", !s, > │ > !result)"') > │ > result |> resultm.ok' |> optionm'.unbox |> > optionm'.default_value > │ > .^(nan (), nan ()) > │ > inl zeta__ = fun (s : complex f64) => > │ > inl result = zeta_ log py s > │ > > │ > inl z = zeta true gamma__ s > │ > > │ > if log then > │ > inl s = join s > │ > !\($'"println\!(\\\"zeta__ / s: {:?} / > result: {:?} / z: > │ > {:?}\\\", !s, !result, !z)"') > │ > > │ > // re result - re x |> abs > │ > // |> _assert_lt 0.001 > │ > > │ > // im result - im x |> abs > │ > // |> _assert_lt 0.001 > │ > > │ > result |> resultm.ok' |> optionm'.unbox |> > optionm'.default_value > │ > .^(nan (), nan ()) > │ > join fn (zeta__, gamma__) > │ > > │ > Ok () > │ > |> resultm.box > │ > > │ > join > │ > !\($'"pyo3::prepare_freethreaded_python()"') : () > │ > > │ > !\($'"let __run_test = pyo3::Python::with_gil(|py| > -> pyo3::PyResult<()> > │ > { //"') > │ > > │ > let x' = fn_ (!\($'"py"') : python) > │ > inl x' = join x' > │ > > │ > inl closure_fix = 2u8, 1u8 > │ > x' |> rust.fix_closure closure_fix > │ > > │ > (!\($'"__run_test"') : _ () pyerr) > │ > |> resultm.unwrap' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_known_values_ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_known_values_ log = run_test log fun zeta, > gamma => > │ > ;[[ > │ > .^(2, 0), pi ** 2 / 6 > │ > .^(-1, 0), -1 / 12 > │ > ]] > │ > |> fun x => a x : _ i32 _ > │ > |> am.iter fun s, e => > │ > inl result = zeta s > │ > > │ > result |> im |> _assert_eq 0 > │ > re result - e |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_known_values_ true > │ > > │ > ── [ 3.31s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen...me: make_mpc / f_locals: > / f_lineno: 603 / > │ > f_code.co_filename: \mpmath\ctx_mp_python.py / > f_back.f_lineno: 1007 / > │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: > None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 604 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(gamma_) / f_code.co_name: > make_mpc / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='1.0', imag='0.0') > │ > │ return(gamma_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: mpc(real='1.0', > imag='0.0') > │ > │ gamma_ / result: (1.0 + 0.0j) / count: > 140 > │ > │ gamma__ / s: Complex { re: 2.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 1.0, im: 0.0 }) > │ > │ zeta / count: 1 / s: Complex { re: 2.0, > im: -0.0 } > │ > │ zeta__ / s: Complex { re: -1.0, im: 0.0 > } / result: > │ > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: > Complex { re: NaN, im: > │ > NaN } > │ > │ __assert_eq / actual: 0.0 / expected: > 0.0 > │ > │ __assert_lt / actual: 0.0 / expected: > 0.0001 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_2_minus2 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_2_minus2 log = run_test log fun zeta, > gamma => > │ > inl s = .^(2, -2) > │ > inl result = zeta s > │ > > │ > (re result - 0.8673) |> abs |> _assert_lt 0.001 > │ > (im result - 0.2750) |> abs |> _assert_lt 0.001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_2_minus2 true > │ > > │ > ── [ 2.84s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, -2.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2-2j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2-2j), > │ > kwargs={}, name='zeta' / f_line.../ arg: None > │ > │ call(zeta_) / f_code.co_name: > python_bitcount / f_locals: n=2 > │ > / f_lineno: 91 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: n=2 > │ > / f_lineno: 93 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ return(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > 2 > │ > │ zeta_ / result: (0.867351829635993 + > 0.275127238807858j) / > │ > count: 1812 > │ > │ zeta / count: 0 / s: Complex { re: 2.0, > im: -2.0 } > │ > │ zeta__ / s: Complex { re: 2.0, im: -2.0 > } / result: > │ > Ok(Complex { re: 0.8673518296359931, im: > 0.27512723880785767 }) / z: Complex { > │ > re: NaN, im: NaN } > │ > │ __assert_lt / actual: > 5.182963599315027e-5 / expected: 0.001 > │ > │ __assert_lt / actual: > 0.00012723880785764363 / expected: > │ > 0.001 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## > test_trivial_zero_at_negative_even___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_trivial_zero_at_negative_even___ log = run_test > log fun zeta, gamma => > │ > (join listm'.init_series -2f64 -40 -2) > │ > |> listm.iter fun n => > │ > inl s = .^(n, 0) > │ > inl result = zeta s > │ > > │ > result |> re |> _assert_eq 0 > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_trivial_zero_at_negative_even___ true > │ > > │ > ── [ 3.37s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (-2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(-2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(-2+0j), > │ > kwargs={}, name='zeta' /...lename: \mpmath\ctx_mp_python.py > / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 604 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(gamma_) / f_code.co_name: > make_mpc / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='8.1591528324789768e+47', imag='0.0') > │ > │ return(gamma_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: > mpc(real='8.1591528324789768e+47', > │ > imag='0.0') > │ > │ gamma_ / result: (8.15915283247898e+47 + > 0.0j) / count: 149 > │ > │ gamma__ / s: Complex { re: 41.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 8.159152832478977e47, im: 0.0 }) > │ > │ zeta / count: 1 / s: Complex { re: 41.0, > im: -0.0 } > │ > │ zeta__ / s: Complex { re: -40.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, > im: NaN } > │ > │ __assert_eq / actual: 0.0 / expected: > 0.0 > │ > │ __assert_eq / actual: 0.0 / expected: > 0.0 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_non_trivial_zero___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_non_trivial_zero___ log = run_test log fun zeta, > gamma => > │ > ;[[ > │ > .^(0.5, 14.134725) > │ > .^(0.5, 21.022040) > │ > .^(0.5, 25.010857) > │ > .^(0.5, 30.424876) > │ > .^(0.5, 32.935062) > │ > .^(0.5, 37.586178) > │ > ]] > │ > |> fun x => a x : _ i32 _ > │ > |> am.iter fun x => > │ > inl result = zeta x > │ > result |> re |> abs |> _assert_lt 0.0001 > │ > result |> im |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_non_trivial_zero___ true > │ > > │ > ── [ 3.03s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: > │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 > / f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code... arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=1208925819614629174706176, > y=-90877802089662679288381440, prec=81, > │ > _m=3416353708500640443578529333, tre=855591523614410863719,│ > tim=64316830603724894628746, ure=-1710577520534459139249, > │ > uim=45518868236127668552, sre=1013002518538853602038572, > │ > sim=90883161825546323029600502 / f_lineno: 1637 / > f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=1208925819614629174706176, > y=-90877802089662679288381440, prec=81, > │ > _m=3416353708500640443578529333, tre=-1816151534455075068, > │ > tim=-45486653225747820096, ure=-1710577520534459139249, > │ > uim=45518868236127668552, sre=1013002518538853602038572, > │ > sim=90883161825546323029600502 / f_lineno: 1638 / > f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ gamma_ / result: (-1.32798420042152e-26 > + > │ > 5.5751975252688e-26j) / count: 309 > │ > │ gamma__ / s: Complex { re: 0.5, im: > -37.586178 } / result: > │ > Ok(Complex { re: -1.3279842004215153e-26, im: > 5.575197525268802e-26 }) > │ > │ zeta__ / s: Complex { re: 0.5, im: > 37.586178 } / result: > │ > Ok(Complex { re: -8.910186507947958e-8, im: > -2.943780446402868e-7 }) / z: > │ > Complex { re: -0.0, im: 0.0 } > │ > │ __assert_lt / actual: > 8.910186507947958e-8 / expected: 0.0001 > │ > │ __assert_lt / actual: > 2.943780446402868e-7 / expected: 0.0001 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_real_part_greater_than_one___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_real_part_greater_than_one___ log = run_test log > fun zeta, gamma => > │ > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] > │ > (a points : _ i32 _) > │ > |> am.iter fun point => > │ > inl s = .^(point, 0) > │ > inl result = zeta s > │ > result |> re |> _assert_gt 0 > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_real_part_greater_than_one___ true > │ > > │ > ── [ 2.93s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen...f_code.co_filename: > \mpmath\ctx_mp_python.py > │ > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: make_mpc / > f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(zeta_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='1.0000000000000009', imag='0.0') > │ > │ return(zeta_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py > / arg: > │ > mpc(real='1.0000000000000009', imag='0.0') > │ > │ return(zeta_) / f_code.co_name: zeta / > f_locals: s=(50+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: > mpc(real='1.0000000000000009', imag='0.0') > │ > │ zeta_ / result: (1.0 + 0.0j) / count: > 181 > │ > │ zeta / count: 0 / s: Complex { re: 50.0, > im: 0.0 } > │ > │ zeta__ / s: Complex { re: 50.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: > Complex { re: NaN, im: NaN > │ > } > │ > │ __assert_gt / actual: 1.0000000000000009 > / expected: 0.0 > │ > │ __assert_eq / actual: 0.0 / expected: > 0.0 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_1___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_1___ log = run_test log fun zeta, gamma => > │ > inl s = .^(1, 0) > │ > inl result = zeta s > │ > result |> re |> _assert_eq limit.max > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_1___ true > │ > > │ > ── [ 2.76s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (1.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(1+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(1+0j), > │ > kwargs={}, name='zeta' / f_linen...back object at 0x<?>>) > │ > │ return(gamma_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: None > │ > │ exception(gamma_) / f_code.co_name: fn / > f_locals: log=True, > │ > s=0j / f_lineno: 25 / f_code.co_filename: / > f_back.f_lineno: / > │ > f_back.f_code.co_filename: / arg: (<class 'ValueError'>, > ValueError('gamma > │ > function pole'), <traceback object at 0x<?>>) > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j > │ > / f_lineno: 29 / f_code.co_filename: / f_back.f_lineno: /│ > f_back.f_code.co_filename: / arg: None > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j, > │ > e=ValueError('gamma function pole') / f_lineno: 30 / > f_code.co_filename: / > │ > f_back.f_lineno: / f_back.f_code.co_filename: / arg: None > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j > │ > / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: /│ > f_back.f_code.co_filename: / arg: None > │ > │ return(gamma_) / f_code.co_name: fn / > f_locals: log=True, > │ > s=0j / f_lineno: 32 / f_code.co_filename: / > f_back.f_lineno: / > │ > f_back.f_code.co_filename: / arg: (0.0, 0.0) > │ > │ gamma__ / s: Complex { re: 0.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 0.0, im: 0.0 }) > │ > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } > / result: Ok(Complex > │ > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 } > │ > │ __assert_eq / actual: inf / expected: > inf > │ > │ __assert_eq / actual: 0.0 / expected: > 0.0 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_symmetry_across_real_axis___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_symmetry_across_real_axis___ log = run_test log > fun zeta, gamma => > │ > inl s = .^(2, 10) > │ > inl result_positive_im = zeta s > │ > inl result_negative_im = zeta .^(re s, -(im s)) > │ > inl conj = result_negative_im |> conj > │ > result_positive_im |> re |> _assert_eq (conj |> re) > │ > result_positive_im |> im |> _assert_eq (conj |> im) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_symmetry_across_real_axis___ true > │ > > │ > ── [ 2.76s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 10.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+10j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+10j), > │ > kwargs={}, name='zeta' /.../ f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py > │ > / arg: None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ return(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > 5 > │ > │ line(zeta_) / f_code.co_name: mpf_add / > f_locals: s=(0, 1, 2, > │ > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, > sman=1, sexp=2, sbc=1, > │ > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / > f_lineno: 779 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 1401 / > │ > f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: > None > │ > │ zeta_ / result: (1.19798250067418 + > 0.0791704917205257j) / > │ > count: 1174 > │ > │ zeta / count: 0 / s: Complex { re: 2.0, > im: -10.0 } > │ > │ zeta__ / s: Complex { re: 2.0, im: -10.0 > } / result: > │ > Ok(Complex { re: 1.1979825006741847, im: > 0.07917049172052575 }) / z: Complex { > │ > re: NaN, im: NaN } > │ > │ __assert_eq / actual: 1.1979825006741847 > / expected: > │ > 1.1979825006741847 > │ > │ __assert_eq / actual: > -0.07917049172052575 / expected: > │ > -0.07917049172052575 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_behavior_near_origin___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_behavior_near_origin___ log = run_test log fun > zeta, gamma => > │ > inl s = .^(0.01, 0.01) > │ > inl result = zeta s > │ > result |> re |> _assert_lt limit.max > │ > result |> im |> _assert_lt limit.max > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_behavior_near_origin___ true > │ > > │ > ── [ 2.85s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.01, 0.01) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / > f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / > f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(0.01+0.01j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(0...py / > │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: mpc_gamma > / f_locals: z=((0, > │ > 4458563631096791, -52, 52), (1, 5764607523034235, -59, > 53)), prec=53, rnd='n', > │ > type=0, a=(0, 4458563631096791, -52, 52), b=(1, > 5764607523034235, -59, 53), > │ > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, > │ > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, > bmag=-6, mag=0, an=0, > │ > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, > 4458563631096791, > │ > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, > balance_prec=0, > │ > n_for_stirling=14, need_reduction=True, > afix=132131814190692672995328, > │ > bfix=-94447329657392906240, r=0, zprered=((0, > 4458563631096791, -52, 52), (1, > │ > 5764607523034235, -59, 53)), d=14, > rre=56942610883563778729574216337150, > │ > one=9444732965739290427392, > rim=-1820461636508155576115177658065, k=12 / > │ > f_lineno: 2043 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ gamma_ / result: (1.00577030202902 + > 0.0059717824054102j) / > │ > count: 383 > │ > │ gamma__ / s: Complex { re: 0.99, im: > -0.01 } / result: > │ > Ok(Complex { re: 1.005770302029023, im: > 0.005971782405410201 }) > │ > │ zeta__ / s: Complex { re: 0.01, im: 0.01 > } / result: > │ > Ok(Complex { re: -0.5091873433665667, im: > -0.00939202213994577 }) / z: Complex { > │ > re: 0.0, im: 0.0 } > │ > │ __assert_lt / actual: > -0.5091873433665667 / expected: inf > │ > │ __assert_lt / actual: > -0.00939202213994577 / expected: inf > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_imaginary_axis > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_imaginary_axis log = run_test log fun zeta, gamma > => > │ > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) > │ > |> listm.iter fun s => > │ > inl s = .^(0, s) > │ > inl result = zeta s > │ > result |> re |> _assert_ne 0 > │ > result |> im |> _assert_ne 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_imaginary_axis true > │ > > │ > ── [ 3.15s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.0, 10.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=10j, kwargs={}, > │ > name='zeta' / f_lineno: 989 / f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > f_back.f_lineno: 533 / f_back.f_code.co_filename: > \mpmath\functions\zeta.py / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=10j, kwargs={}, > │ > name='zeta' / f_lineno: 990 / f_code.co_f...g: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: > \mpmath\libmp\libmpf.py / > │ > f_back.f_lineno: 2031 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 > / f_code.co_filename: > │ > \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / > f_lineno: 513 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 2031 / > │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / > arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / > f_lineno: 517 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 2031 / > │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / > arg: None > │ > │ gamma_ / result: (-1.51425318049776e-67 > + > │ > 2.79082155561748e-69j) / count: 289 > │ > │ gamma__ / s: Complex { re: 1.0, im: > -100.0 } / result: > │ > Ok(Complex { re: -1.514253180497756e-67, im: > 2.7908215556174775e-69 }) > │ > │ zeta__ / s: Complex { re: 0.0, im: 100.0 > } / result: > │ > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 > }) / z: Complex { re: > │ > 0.0, im: 0.0 } > │ > │ __assert_ne / actual: 6.51721042625301 / > expected: 0.0 > │ > │ __assert_ne / actual: > 0.18128842533791736 / expected: 0.0 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_critical_strip > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_critical_strip log = run_test log fun zeta, gamma > => > │ > (join [[ > │ > .^(0.5, 14.134725) > │ > .^(0.75, 20.5) > │ > .^(1.25, 30.1) > │ > .^(0.25, 40.0) > │ > .^(1.0, 50.0) > │ > ]]) > │ > |> listm.iter fun s => > │ > inl result = zeta s > │ > result |> re |> _assert_ne 0 > │ > result |> im |> _assert_ne 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_critical_strip true > │ > > │ > ── [ 3.27s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: > │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 > / f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code...210, > sim=241793223535862290161314995 / > │ > f_lineno: 1648 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, > │ > _m=12089258196146291747061760000, tre=0, tim=396, > ure=-1934281311383406679530, > │ > uim=0, sre=4443714077719696485012210, > sim=241793223535862290161314995 / > │ > f_lineno: 1649 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, > │ > _m=12089258196146291747061760000, tre=0, tim=396, > ure=-1934281311383406679530, > │ > uim=0, sre=4443714077719696485012210, > sim=241793223535862290161314997 / > │ > f_lineno: 1650 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ gamma_ / result: (2.63173210619768e-35 -│ > 8.16464935465334e-36j) / count: 262 > │ > │ gamma__ / s: Complex { re: 0.0, im: > -50.0 } / result: > │ > Ok(Complex { re: 2.6317321061976804e-35, im: > -8.164649354653339e-36 }) > │ > │ zeta__ / s: Complex { re: 1.0, im: 50.0 > } / result: > │ > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 > }) / z: Complex { > │ > re: 0.0, im: 0.0 } > │ > │ __assert_ne / actual: > 0.44103873082309397 / expected: 0.0 > │ > │ __assert_ne / actual: 0.281582455029683 > / expected: 0.0 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## > test_reflection_formula_for_specific_value > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_reflection_formula_for_specific_value log = > run_test log fun zeta, > │ > gamma => > │ > (join [[ > │ > .^(3, 4) > │ > .^(2.5, -3.5) > │ > .^(1.5, 2.5) > │ > .^(0.5, 14.134725) > │ > ]]) > │ > |> listm.iter fun s => > │ > inl lhs = zeta s > │ > inl reflection_coefficient = > │ > (.^(2, 0) .** s) > │ > .* (.^(pi, 0) .** (s .- .^(1, 0))) > │ > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) > │ > .* gamma (.^(1, 0) .- s) > │ > > │ > inl one_minus_s = .^(1 - re s, -(im s)) > │ > inl rhs = reflection_coefficient .* zeta > one_minus_s > │ > > │ > re lhs - re rhs |> abs |> _assert_lt 0.0001 > │ > im lhs - im rhs |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_reflection_formula_for_specific_value true > │ > > │ > ── [ 3.13s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (3.0, 4.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(3+4j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(3+4j), > │ > kwargs={}, name='zeta' / f_linen...045 / > f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 1007 / > f_back.f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / arg: None > │ > │ line(gamma_) / f_code.co_name: mpc_gamma > / f_locals: z=((0, > │ > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, > rnd='n', type=0, a=(0, 1, > │ > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, > aexp=-1, abc=1, > │ > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, > amag=0, bmag=4, mag=4, > │ > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, > zorig=((0, 1, -1, 1), > │ > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, > n_for_stirling=15, > │ > need_reduction=True, afix=2115620184325601055735808, > │ > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, > 1), (0, > │ > 3978571390186527, -48, 52)), d=5, > rre=-542313259704087430481959845, > │ > one=604462909807314587353088, > rim=-1657865507045117397880679064, k=2 / f_lineno: > │ > 2043 / f_code.co_filename: \mpmath\libmp\gammazeta.py / > f_back.f_lineno: 1007 / > │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: > None > │ > │ gamma_ / result: (-1.4455538437607e-10 -│ > 5.52278876877407e-10j) / count: 318 > │ > │ gamma__ / s: Complex { re: 0.5, im: > 14.134725 } / result: > │ > Ok(Complex { re: -1.4455538437606964e-10, im: > -5.522788768774066e-10 }) > │ > │ zeta__ / s: Complex { re: 0.5, im: > -14.134725 } / result: > │ > Ok(Complex { re: 1.7674298413849186e-8, im: > 1.1102028930923156e-7 }) / z: > │ > Complex { re: 0.0, im: 0.0 } > │ > │ __assert_lt / actual: > 4.499862532288471e-22 / expected: > │ > 0.0001 > │ > │ __assert_lt / actual: > 1.4558378780933287e-22 / expected: > │ > 0.0001 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_euler_product_formula > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_euler_product_formula log = run_test log fun zeta, > gamma => > │ > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] > │ > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; > 29; 31; 37; 41; 43; 47; > │ > 53; 59; 61; 67; 71 ]] > │ > s_values > │ > |> listm.iter fun s_re => > │ > inl s = .^(s_re, 0) > │ > inl product = > │ > (1, primes) > │ > ||> listm.fold fun acc x => > │ > acc * 1 / (1 - x ** -s_re) > │ > > │ > inl result = zeta s > │ > re result - product |> abs |> _assert_lt 0.01 > │ > result |> im |> _assert_lt 0.01 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_euler_product_formula true > │ > > │ > ── [ 2.99s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen...k.f_lineno: 985 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: > mpf_zeta_int / f_locals: s=5, > │ > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, > n=33, d=[1, 2179, 792067, > │ > 115062531, 8930212611, 429314925315, 13983537177347, > 327666966438659, > │ > 5764846406968067, 78615943485956867, 851604426176701187, > 7470527451121689347, > │ > 53898915046387983107, 323897845985013506819, > 1638178356374090130179, > │ > 7034281785235908174595, 25833609859980306522883, > 81661917475887913739011, > │ > 223448095548034217779971, 532029677981012660429571, > 1108048631855905753375491, > │ > 2029946562680066824315651, 3292927237466655352791811, > 4769455369342763680768771, > │ > 6235511670496346417767171, 7463408621503347142796035, > 8322751284048216428487427, > │ > 8818779962777819524211459, 9050689474911140452082435, > 9136270117622166323831555, > │ > 9160252037839493347779331, 9165045885455648617505539, > 9165654628010081032708867, > │ > 9165691521498228451812099], > t=-84153986440240940095109733900764881301998910956, > │ > k=26 / f_lineno: 954 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 985 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ zeta_ / result: (1.03692775514337 + > 0.0j) / count: 228 > │ > │ zeta / count: 0 / s: Complex { re: 5.0, > im: 0.0 } > │ > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } > / result: Ok(Complex > │ > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, > im: NaN } > │ > │ __assert_lt / actual: > 2.0033654735129858e-9 / expected: 0.01 > │ > │ __assert_lt / actual: 0.0 / expected: > 0.01 > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## graph > │ > > │ > ── mermaid > ───────────────────────────────────────────────────────────────────── > │ > │ <div class="mermaidMarkdownContainer" > │ > style="background-color:white"> > │ > │ <link rel="stylesheet" > │ > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > │ > > > │ > │ <div > id="b95c6c5b23494b9aa76b148ef39feca3"></div> > │ > │ <script type="module"> > │ > │ > │ > │ import mermaid from > │ > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ > │ let renderTarget = > │ > > document.getElementById('b95c6c5b23494b9aa76b148ef39feca3'); > │ > │ try { > │ > │ const {svg, > bindFunctions} = await > │ > mermaid.mermaidAPI.render( > │ > │ > │ > 'mermaid_b95c6c5b23494b9aa76b148ef39feca3', > │ > │ `graph TD > │ > │ zeta("zeta()") --> convert > │ > │ zeta --> f["f()"] > │ > │ f --> mpc_f["mpc_zeta()"] > │ > │ f --> mpf_f["mpf_zeta()"] > │ > │ convert --> from_float > │ > │ from_float --> from_man_exp > │ > │ from_man_exp --> python_bitcount > │ > │ python_bitcount --> _normalize > │ > │ _normalize --> make_mpc > │ > │ make_mpc --> > mpc_zeta["mpc_zeta()"] > │ > │ mpc_zeta --> > mpf_zeta["mpf_zeta()"] > │ > │ mpf_zeta --> to_int > │ > │ to_int --> > mpf_zeta_int["mpf_zeta_int()"] > │ > │ mpf_zeta_int --> > borwein_coefficients > │ > │ borwein_coefficients --> > │ > from_man_exp_2("from_man_exp()") > │ > │ from_man_exp_2 --> > │ > python_bitcount_2("python_bitcount()") > │ > │ python_bitcount_2 --> > _normalize_2("_normalize()") > │ > │ _normalize_2 --> > make_mpc_2("make_mpc()") > │ > │ make_mpc_2 --> stop_trace > │ > │ mpf_zeta_int --> mpf_bernoulli > │ > │ mpf_bernoulli --> bernoulli_size > │ > │ bernoulli_size --> mpf_rdiv_int > │ > │ mpf_rdiv_int --> > python_bitcount_3("python_bitcount()") > │ > │ python_bitcount_3 --> _normalize1 > │ > │ _normalize1 --> > from_man_exp_3("from_man_exp()") > │ > │ from_man_exp_3 --> > _normalize_3("_normalize()") > │ > │ _normalize_3 --> mpf_sub > │ > │ mpf_sub --> mpf_add > │ > │ mpf_add --> mpf_neg > │ > │ mpf_neg --> > _normalize1_2("_normalize1()") > │ > │ _normalize1_2 --> from_int > │ > │ from_int --> mpf_div > │ > │ mpf_div --> > python_bitcount_4("python_bitcount()") > │ > │ python_bitcount_4 --> > _normalize1_3("_normalize1()") > │ > │ _normalize1_3 --> > make_mpc_3("make_mpc()") > │ > │ make_mpc_3 --> > final_stop["stop_trace()"]`); > │ > │ renderTarget.innerHTML > = svg; > │ > │ > bindFunctions?.(renderTarget); > │ > │ } > │ > │ catch (error) { > │ > │ console.log(error); > │ > │ } > │ > │ </script> > │ > │ </div> > │ > │ > │ > > │ > ── mermaid > ───────────────────────────────────────────────────────────────────── > │ > │ <div class="mermaidMarkdownContainer" > │ > style="background-color:white"> > │ > │ <link rel="stylesheet" > │ > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > │ > > > │ > │ <div > id="f87ddf8e5fea4a4d970e8abdff3c103b"></div> > │ > │ <script type="module"> > │ > │ > │ > │ import mermaid from > │ > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ > │ let renderTarget = > │ > > document.getElementById('f87ddf8e5fea4a4d970e8abdff3c103b'); > │ > │ try { > │ > │ const {svg, > bindFunctions} = await > │ > mermaid.mermaidAPI.render( > │ > │ > │ > 'mermaid_f87ddf8e5fea4a4d970e8abdff3c103b', > │ > │ `graph TD > │ > │ zeta_rust("zeta() - Rust") --> > num_traits("num-traits") > │ > │ zeta_rust --> > num_bigint("num-bigint") > │ > │ zeta_rust --> > rust_decimal("rust_decimal for > │ > precision") > │ > │ zeta_rust --> error_handling("Rust > Error Handling") > │ > │ > │ > │ num_traits --> > num_traits_usage("Use for common > │ > traits") > │ > │ num_bigint --> > bigint_operations("Arbitrary-precision > │ > arithmetic operations") > │ > │ rust_decimal --> > decimal_operations("High-precision > │ > decimal operations") > │ > │ error_handling --> > result_type("Use Result<T, E> for > │ > error handling") > │ > │ > │ > │ bigint_operations --> > convert_rust("convert() - Rust") > │ > │ bigint_operations --> > normalize_rust("_normalize() - > │ > Rust") > │ > │ > │ > │ convert_rust --> > from_float_rust("from_float() - Rust") > │ > │ from_float_rust --> > from_man_exp_rust("from_man_exp() - > │ > Rust") > │ > │ from_man_exp_rust --> > bitcount_rust("bitcount() - > │ > Rust") > │ > │ bitcount_rust --> normalize_rust > │ > │ normalize_rust --> > mpc_zeta_rust("mpc_zeta() - Rust") > │ > │ mpc_zeta_rust --> > mpf_zeta_rust("mpf_zeta() - Rust") > │ > │ mpf_zeta_rust --> > to_int_rust("to_int() - Rust") > │ > │ to_int_rust --> > mpf_zeta_int_rust("mpf_zeta_int() - > │ > Rust") > │ > │ > │ > │ mpf_zeta_int_rust --> > │ > borwein_coefficients_rust("borwein_coefficients() - Rust") > │ > │ borwein_coefficients_rust --> > │ > from_man_exp_rust_2("from_man_exp() - Rust") > │ > │ from_man_exp_rust_2 --> > bitcount_rust_2("bitcount() - > │ > Rust") > │ > │ bitcount_rust_2 --> > normalize_rust_2("_normalize() - > │ > Rust") > │ > │ normalize_rust_2 --> > make_mpc_rust("make_mpc() - Rust") > │ > │ > │ > │ mpf_zeta_int_rust --> > │ > mpf_bernoulli_rust("mpf_bernoulli() - Rust") > │ > │ mpf_bernoulli_rust --> > │ > bernoulli_size_rust("bernoulli_size() - Rust") > │ > │ bernoulli_size_rust --> > │ > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") > │ > │ mpf_rdiv_int_rust --> > bitcount_rust_3("bitcount() - > │ > Rust") > │ > │ bitcount_rust_3 --> > normalize1_rust("_normalize1() - > │ > Rust") > │ > │ normalize1_rust --> > from_man_exp_rust_3("from_man_exp() > │ > - Rust") > │ > │ from_man_exp_rust_3 --> > normalize_rust_3("_normalize() > │ > - Rust") > │ > │ normalize_rust_3 --> > mpf_sub_rust("mpf_sub() - Rust") > │ > │ mpf_sub_rust --> > mpf_add_rust("mpf_add() - Rust") > │ > │ mpf_add_rust --> > mpf_neg_rust("mpf_neg() - Rust") > │ > │ mpf_neg_rust --> > normalize1_rust_2("_normalize1() - > │ > Rust") > │ > │ normalize1_rust_2 --> > from_int_rust("from_int() - > │ > Rust") > │ > │ from_int_rust --> > mpf_div_rust("mpf_div() - Rust") > │ > │ mpf_div_rust --> > bitcount_rust_4("bitcount() - Rust") > │ > │ bitcount_rust_4 --> > normalize1_rust_3("_normalize1() - > │ > Rust") > │ > │ > │ > │ style zeta_rust > fill:#f9f,stroke:#333,stroke-width:4px > │ > │ style num_traits > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style num_bigint > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style rust_decimal > │ > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style error_handling > │ > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style bigint_operations > │ > fill:#bfb,stroke:#333,stroke-width:2px > │ > │ style decimal_operations > │ > fill:#bfb,stroke:#333,stroke-width:2px > │ > │ style result_type > │ > fill:#bfb,stroke:#333,stroke-width:2px`); > │ > │ renderTarget.innerHTML > = svg; > │ > │ > bindFunctions?.(renderTarget); > │ > │ } > │ > │ catch (error) { > │ > │ console.log(error); > │ > │ } > │ > │ </script> > │ > │ </div> > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## tests > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl tests () = > │ > testing.run_tests_log { > │ > test_zeta_at_known_values_ > │ > test_zeta_at_2_minus2 > │ > test_trivial_zero_at_negative_even___ > │ > test_non_trivial_zero___ > │ > test_real_part_greater_than_one___ > │ > test_zeta_at_1___ > │ > test_symmetry_across_real_axis___ > │ > test_behavior_near_origin___ > │ > test_imaginary_axis > │ > test_critical_strip > │ > test_reflection_formula_for_specific_value > │ > test_euler_product_formula > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > ///! _ > │ > > │ > inl main (_args : array_base string) = > │ > inl value = 1i32 > │ > console.write_line ($'$"value: {!value}"' : string) > │ > 0i32 > │ > > │ > inl main () = > │ > $'let tests () = !tests ()' : () > │ > $'let main args = !main args' : () > │ 00:01:00 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 76866 } > │ 00:01:00 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/lib/math/math.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/lib/math/math.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:01 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/lib/math/math.dib.ipynb to html > │ 00:01:01 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:01:01 v #7 ! validate(nb) > │ 00:01:02 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:01:02 v #9 ! return _pygments_highlight( > │ 00:01:03 v #10 ! [NbConvertApp] Writing 7171318 bytes > to c:\home\git\polyglot\lib\math\math.dib.html > │ 00:01:03 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 847 } > │ 00:01:03 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 847 } > │ 00:01:03 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace > '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace > '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:04 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:01:04 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:01:04 d #16 spiral.run / dib / { exit_code = 0; > result_length = 77772 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > math.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > math.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > math / hash: / code.Length: 217639 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\math\math.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64"; options = { > command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" > --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime > linux-x64; cancellation_token = None; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Restored > c:\home\git\polyglot\target\Builder\math\math.fsproj (in 231 ms). > │ 00:00:14 v #7 > math -> > c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\linux-x64\math.dll > │ 00:00:15 v #8 > math -> > C:\home\git\polyglot\lib\math\dist\ > │ 00:00:15 d #9 runtime.execute_with_options_async / { > exit_code = 0; output_length = 411; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:15 d #10 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64"; options = { > command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" > --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime > win-x64; cancellation_token = None; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:16 v #11 > Determining projects to restore... > │ 00:00:16 v #12 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:16 v #13 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:16 v #14 > Total time taken: 0 milliseconds > │ 00:00:17 v #15 > Restored > c:\home\git\polyglot\target\Builder\math\math.fsproj (in 217 ms). > │ 00:00:29 v #16 > math -> > c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\win-x64\math.dll > │ 00:00:30 v #17 > math -> > C:\home\git\polyglot\lib\math\dist\ > │ 00:00:30 d #18 runtime.execute_with_options_async / { > exit_code = 0; output_length = 409; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\math > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\math / ProjectName: math / Language: rs / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @SirUppyPancakes > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\math\math.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 149ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 9350ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\target\Builder\math\math.fs(46,0): (48,3) warning FABLE: > For Rust, support for F# static and module do bindings is disabled by default. > It can be enabled with the 'static_do_bindings' feature. Use at your own risk! > │ polyglot/lib/math/build.ps1 / path: > C:\home\git\polyglot\target\Builder\math/target/rs/math.rs > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling math v0.0.1 > (C:\home\git\polyglot\lib\math) > │ Finished `release` profile [optimized] target(s) in > 17.82s > │ Running unittests math.rs > (C:\home\git\polyglot\workspace\target\release\deps\math-7035482ad4544907.exe) > │ > │ running 12 tests > │ test module_728458a3::Math::test_symmetry_across_real_axis___ > ... ok > │ test module_728458a3::Math::test_euler_product_formula ... ok > │ test module_728458a3::Math::test_critical_strip ... ok > │ test module_728458a3::Math::test_zeta_at_2_minus2 ... ok > │ test module_728458a3::Math::test_behavior_near_origin___ ... > ok > │ test module_728458a3::Math::test_imaginary_axis ... ok > │ test > module_728458a3::Math::test_reflection_formula_for_specific_value ... ok > │ test > module_728458a3::Math::test_real_part_greater_than_one___ ... ok > │ test > module_728458a3::Math::test_trivial_zero_at_negative_even___ ... ok > │ test module_728458a3::Math::test_non_trivial_zero___ ... ok > │ test module_728458a3::Math::test_zeta_at_1___ ... ok > │ test module_728458a3::Math::test_zeta_at_known_values_ ... ok > │ > │ test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; > 0 filtered out; finished in 0.77s > │ > │ polyglot/lib/math/build.ps1 / $targetDir: > C:\home\git\polyglot\target\Builder\math / $projectName: math / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/plot/build.ps1 } | Invoke-Block > > ── [ 25.25s - stdout ] ───────────────────────────────────────────────────────── > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling plot v0.0.1 > (C:\home\git\polyglot\apps\plot) > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:534: > 33 > │ | > │ 534 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ = note: `#[warn(unused_parens)]` on by default > │ help: remove these parentheses > │ | > │ 534 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 534 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:534: > 58 > │ | > │ 534 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 534 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 534 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:709:33[0 > m > │ | > │ 709 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 709 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 709 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:709:58[0 > m > │ | > │ 709 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 709 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 709 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:975:30[0 > m > │ | > │ 975 | break '_method29 (match > v0_1.get().clone().as_ref() { > │ | ^ > │ ... > │ 1013 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 975 ~ break '_method29 match > v0_1.get().clone().as_ref() { > │ 976 | Runtime::UH0::UH0_0 => > (v1_1.get().clone(), v2_1.get().clone(), v3.get().clone()), > │ ... > │ 1012 | } > │ 1013 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1020:62[ > 0m > │ | > │ 1020 | (Runtime::method30(v0_1, (v1_1) + > 1_i32))(append((v2_1), string(" "))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1020 - (Runtime::method30(v0_1, (v1_1) + > 1_i32))(append((v2_1), string(" "))) > │ 1020 + (Runtime::method30(v0_1, (v1_1) + > 1_i32))(append(v2_1, string(" "))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1110:25[ > 0m > │ | > │ 1110 | ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1110 - ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ 1110 + (Runtime::method30((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1198:25[ > 0m > │ | > │ 1198 | ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1198 - ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ 1198 + (Runtime::method30((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1215:30[ > 0m > │ | > │ 1215 | break '_method31 (match > v2_1.get().clone().as_ref() { > │ | ^ > │ ... > │ 1247 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1215 ~ break '_method31 match > v2_1.get().clone().as_ref() { > │ 1216 | Runtime::UH1::UH1_0 => { > │ ... > │ 1246 | } > │ 1247 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1254:30[ > 0m > │ | > │ 1254 | break '_method32 (if > (v1_1.get().clone()) >= 2_i64 { > │ | ^ > │ ... > │ 1285 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1254 ~ break '_method32 if > (v1_1.get().clone()) >= 2_i64 { > │ 1255 | false > │ ... > │ 1284 | } > │ 1285 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1301:30[ > 0m > │ | > │ 1301 | break '_method33 ({ > │ | ^ > │ ... > │ 1399 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1301 ~ break '_method33 { > │ 1302 | let v145: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 1398 | } > │ 1399 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1379:36[ > 0m > │ | > │ 1379 | ... > append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1379 - > append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); > │ 1379 + > append(v0_1.get().clone(), (ofChar(v157_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1379:58[ > 0m > │ | > │ 1379 | ... > append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1379 - > append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); > │ 1379 + > append((v0_1.get().clone()), ofChar(v157_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1415:30[ > 0m > │ | > │ 1415 | break '_method34 (match > v4.get().clone().as_ref() { > │ | ^ > │ ... > │ 1450 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1415 ~ break '_method34 match > v4.get().clone().as_ref() { > │ 1416 | Runtime::UH1::UH1_0 => { > │ ... > │ 1449 | } > │ 1450 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1457:30[ > 0m > │ | > │ 1457 | break '_method35 (if > (v1_1.get().clone()) >= 3_i64 { > │ | ^ > │ ... > │ 1493 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1457 ~ break '_method35 if > (v1_1.get().clone()) >= 3_i64 { > │ 1458 | false > │ ... > │ 1492 | } > │ 1493 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1509:30[ > 0m > │ | > │ 1509 | break '_method36 ({ > │ | ^ > │ ... > │ 1607 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1509 ~ break '_method36 { > │ 1510 | let v153: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 1606 | } > │ 1607 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1587:36[ > 0m > │ | > │ 1587 | ... > append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1587 - > append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); > │ 1587 + > append(v0_1.get().clone(), (ofChar(v165_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1587:58[ > 0m > │ | > │ 1587 | ... > append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1587 - > append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); > │ 1587 + > append((v0_1.get().clone()), ofChar(v165_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1614:30[ > 0m > │ | > │ 1614 | break '_method37 (if > (v1_1.get().clone()) >= (length(v0_1.get().clone())) { > │ | ^ > │ ... > │ 1626 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1614 ~ break '_method37 if > (v1_1.get().clone()) >= (length(v0_1.get().clone())) { > │ 1615 | v1_1.get().clone() > │ ... > │ 1625 | } > │ 1626 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1642:30[ > 0m > │ | > │ 1642 | break '_method38 ({ > │ | ^ > │ ... > │ 1717 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1642 ~ break '_method38 { > │ 1643 | let v108: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 1716 | } > │ 1717 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1697:36[ > 0m > │ | > │ 1697 | ... > append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1697 - > append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); > │ 1697 + > append(v0_1.get().clone(), (ofChar(v108_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1697:58[ > 0m > │ | > │ 1697 | ... > append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1697 - > append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); > │ 1697 + > append((v0_1.get().clone()), ofChar(v108_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2155:37[ > 0m > │ | > │ 2155 | ... ((Runtime::method30((v515) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2155 - > ((Runtime::method30((v515) - 1_i32, 0_i32))(string(""))), > │ 2155 + > (Runtime::method30((v515) - 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3249:30[ > 0m > │ | > │ 3249 | break '_method62 (if > (v1_1.get().clone()) >= 4_i64 { > │ | ^ > │ ... > │ 3290 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3249 ~ break '_method62 if > (v1_1.get().clone()) >= 4_i64 { > │ 3250 | false > │ ... > │ 3289 | } > │ 3290 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3306:30[ > 0m > │ | > │ 3306 | break '_method63 ({ > │ | ^ > │ ... > │ 3391 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3306 ~ break '_method63 { > │ 3307 | let v161: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 3390 | } > │ 3391 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3371:36[ > 0m > │ | > │ 3371 | ... > append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3371 - > append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); > │ 3371 + > append(v0_1.get().clone(), (ofChar(v161_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3371:58[ > 0m > │ | > │ 3371 | ... > append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3371 - > append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); > │ 3371 + > append((v0_1.get().clone()), ofChar(v161_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3398:30[ > 0m > │ | > │ 3398 | break '_method65 (if > (v1_1.get().clone()) >= 3_i64 { > │ | ^ > │ ... > │ 3434 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3398 ~ break '_method65 if > (v1_1.get().clone()) >= 3_i64 { > │ 3399 | false > │ ... > │ 3433 | } > │ 3434 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3517:25[ > 0m > │ | > │ 3517 | ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3517 - ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ 3517 + (Runtime::method30((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3584:28[ > 0m > │ | > │ 3584 | append((ofChar('\\')), > (ofChar(v285_0_0.clone()))), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3584 - append((ofChar('\\')), > (ofChar(v285_0_0.clone()))), > │ 3584 + append(ofChar('\\'), > (ofChar(v285_0_0.clone()))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3584:44[ > 0m > │ | > │ 3584 | append((ofChar('\\')), > (ofChar(v285_0_0.clone()))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3584 - append((ofChar('\\')), > (ofChar(v285_0_0.clone()))), > │ 3584 + append((ofChar('\\')), > ofChar(v285_0_0.clone())), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3674:25[ > 0m > │ | > │ 3674 | ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3674 - ((Runtime::method30((v3) > - 1_i32, 0_i32))(string(""))), > │ 3674 + (Runtime::method30((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3741:28[ > 0m > │ | > │ 3741 | append((ofChar('`')), > (ofChar(v285_0_0.clone()))), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3741 - append((ofChar('`')), > (ofChar(v285_0_0.clone()))), > │ 3741 + append(ofChar('`'), > (ofChar(v285_0_0.clone()))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3741:43[ > 0m > │ | > │ 3741 | append((ofChar('`')), > (ofChar(v285_0_0.clone()))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3741 - append((ofChar('`')), > (ofChar(v285_0_0.clone()))), > │ 3741 + append((ofChar('`')), > ofChar(v285_0_0.clone())), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3764:30[ > 0m > │ | > │ 3764 | break '_method66 (match > v4.get().clone().as_ref() { > │ | ^ > │ ... > │ 3799 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3764 ~ break '_method66 match > v4.get().clone().as_ref() { > │ 3765 | Runtime::UH3::UH3_0 => { > │ ... > │ 3798 | } > │ 3799 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3809:30[ > 0m > │ | > │ 3809 | break '_method67 (match > v0_1.get().clone().as_ref() { > │ | ^ > │ ... > │ 3829 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3809 ~ break '_method67 match > v0_1.get().clone().as_ref() { > │ 3810 | Runtime::UH2::UH2_0 => > v1_1.get().clone(), > │ ... > │ 3828 | } > │ 3829 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3845:30[ > 0m > │ | > │ 3845 | break '_method64 ({ > │ | ^ > │ ... > │ 3973 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3845 ~ break '_method64 { > │ 3846 | let v153: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 3972 | } > │ 3973 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4009:30[ > 0m > │ | > │ 4009 | break '_method69 ({ > │ | ^ > │ ... > │ 4106 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 4009 ~ break '_method69 { > │ 4010 | let v153: Runtime::US7 = if > string("") == (v1_1.get().clone()) { > │ ... > │ 4105 | } > │ 4106 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4122:30[ > 0m > │ | > │ 4122 | break '_method61 ({ > │ | ^ > │ ... > │ 4653 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 4122 ~ break '_method61 { > │ 4123 | let v5: bool = string("") == > (v1_1.get().clone()); > │ ... > │ 4652 | } > │ 4653 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4289:96[ > 0m > │ | > │ 4289 | ... > append(((Runtime::method30((v4.get().clone()) > │ | ^ > │ ... > │ 4292 | ... > 0_i32))(string(""))), > │ | > ^ > │ | > │ help: remove these parentheses > │ | > │ 4289 ~ > > append((Runtime::method30((v4.get().clone()) > │ 4290 | > > - > │ 4291 | > > 1_i32, > │ 4292 ~ > > 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4437:11 > 6 > │ | > │ 4437 | ... > append(((Runtime::method30((v398) > │ | ^ > │ ... > │ 4440 | ... > 0_i32))(string(""))), > │ | > ^ > │ | > │ help: remove these parentheses > │ | > │ 4437 ~ > > append((Runtime::method30((v398) > │ 4438 | > > - > │ 4439 | > > 1_i32, > │ 4440 ~ > > 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:481:33 > │ | > │ 481 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 481 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 481 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:481:58 > │ | > │ 481 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 481 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 481 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:760 > :33 > │ | > │ 760 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 760 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 760 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:760 > :58 > │ | > │ 760 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 760 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 760 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:257 > 9:81 > │ | > │ 2579 | (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) > │ | > > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2579 - (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) > │ 2579 + (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:257 > 9:87 > │ | > │ 2579 | (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) > │ | > > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2579 - (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) > │ 2579 + (File_system::method109(v0_1, > v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1)) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:259 > 3:13 > │ | > │ 2593 | ((File_system::method109(32_i32 - > (length(v0_1.clone())), v3, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2593 - ((File_system::method109(32_i32 - > (length(v0_1.clone())), v3, 0_i32))(string(""))), > │ 2593 + (File_system::method109(32_i32 - > (length(v0_1.clone())), v3, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:259 > 4:13 > │ | > │ 2594 | (v0_1), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2594 - (v0_1), > │ 2594 + v0_1, > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:340 > 8:31 > │ | > │ 3408 | break '_method141 (if > v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { > │ | ^ > │ ... > │ 3449 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3408 ~ break '_method141 if > v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { > │ 3409 | > File_system::US17::US17_0(v4.get().clone()) > │ ... > │ 3448 | } > │ 3449 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:343 > 3:25 > │ | > │ 3433 | (concat(new_array(&[ > │ | ^ > │ ... > │ 3440 | ]))), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3433 ~ concat(new_array(&[ > │ 3434 | > string("file_system.find_parent / No parent for "), > │ ... > │ 3439 | }, > │ 3440 ~ ])), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:347 > 7:21 > │ | > │ 3477 | (concat(new_array(&[ > │ | ^ > │ ... > │ 3480 | ]))), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3477 ~ concat(new_array(&[ > │ 3478 | > string("file_system.find_parent / No parent for "), > │ 3479 | if v2_1 { string("file") > } else { string("dir") }, > │ 3480 ~ ])), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70 > │ | > │ 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append(v3_1, (v1_1))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78 > │ | > │ 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), v1_1)) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13 > │ | > │ 108 | ((Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 108 - ((Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string(""))), > │ 108 + (Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13 > │ | > │ 109 | (v2_1), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 109 - (v2_1), > │ 109 + v2_1, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13 > │ | > │ 128 | (v2_1.clone()), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 128 - (v2_1.clone()), > │ 128 + v2_1.clone(), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13 > │ | > │ 129 | ((Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 129 - ((Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string(""))), > │ 129 + (Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17 > │ | > │ 345 | (getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 345 - (getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32))), > │ 345 + getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:17 > │ | > │ 410 | > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ 410 + > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:25 > │ | > │ 410 | > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ 410 + > (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:73 > │ | > │ 410 | > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ 410 + > (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:33 > │ | > │ 410 | > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ 410 + > (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:55 > │ | > │ 410 | > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), > │ 410 + > (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:627:33 > │ | > │ 627 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 627 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 627 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:627:58 > │ | > │ 627 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 627 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 627 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:559:33 > │ | > │ 559 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 559 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 559 + let v3: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:559:58 > │ | > │ 559 | let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 559 - let v3: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 559 + let v3: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:736:29 > │ | > │ 736 | break '_method8 ({ > │ | ^ > │ ... > │ 773 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 736 ~ break '_method8 { > │ 737 | let result: > LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); > │ ... > │ 772 | } > │ 773 ~ }; > │ | > │ > │ warning: `plot` (lib) generated 69 warnings (run `cargo > fix --lib -p plot` to apply 69 suggestions) > │ Finished `release` profile [optimized] target(s) in > 24.82s > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/perf/build.ps1 } | Invoke-Block > > ── [ 1.26m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/perf/Perf.dib", "--output-path", > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/apps/perf/Perf.dib" > --output-path "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Perf (Polyglot) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > open benchmark > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## TestCaseResult > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type TestCaseResult = > │ > { > │ > Input: string > │ > Expected: string > │ > Result: string > │ > TimeList: int64 list > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## run > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let run count (solutions: (string * ('TInput -> > 'TExpected)) list) (input, > │ > expected) = > │ > let inputStr = > │ > match box input with > │ > | :? System.Collections.ICollection as input -> > │ > System.Linq.Enumerable.Cast<obj> input > │ > |> Seq.map string > │ > |> SpiralSm.concat "," > │ > | _ -> input.ToString () > │ > > │ > printfn "" > │ > printfn $"Solution: {inputStr} " > │ > > │ > let performanceInvoke (fn: unit -> 'T) = > │ > GC.Collect () > │ > let stopwatch = System.Diagnostics.Stopwatch () > │ > stopwatch.Start () > │ > let time1 = stopwatch.ElapsedMilliseconds > │ > > │ > let result = > │ > [[| 0 .. count |]] > │ > |> Array.Parallel.map (fun _ -> > │ > fn () > │ > ) > │ > |> Array.last > │ > > │ > let time2 = stopwatch.ElapsedMilliseconds - time1 > │ > > │ > result, time2 > │ > > │ > let resultsWithTime = > │ > solutions > │ > |> List.mapi (fun i (testName, solution) -> > │ > let result, time = performanceInvoke (fun () -> > solution input) > │ > printfn $"Test case %d{i + 1}. %s{testName}. > Time: %A{time} " > │ > result, time > │ > ) > │ > > │ > > │ > match resultsWithTime |> List.map fst with > │ > | ([[]] | [[ _ ]]) -> () > │ > | (head :: tail) when tail |> List.forall ((=) head) -> > () > │ > | results -> failwithf $"Challenge error: %A{results}" > │ > > │ > { > │ > Input = inputStr > │ > Expected = expected.ToString () > │ > Result = resultsWithTime |> Seq.map fst |> Seq.head > |> _.ToString() > │ > TimeList = resultsWithTime |> List.map snd > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## runAll > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let runAll testName count (solutions: (string * ('TInput -> > 'TExpected)) list) > │ > testCases = > │ > printfn "" > │ > printfn "" > │ > printfn $"Test: {testName}" > │ > testCases > │ > |> Seq.map (run count solutions) > │ > |> Seq.toList > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## sortResultList > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sortResultList resultList = > │ > let table = > │ > let rows = > │ > resultList > │ > |> List.map (fun result -> > │ > let best = > │ > result.TimeList > │ > |> List.mapi (fun i time -> > │ > i + 1, time > │ > ) > │ > |> List.sortBy snd > │ > |> List.head > │ > |> _.ToString() > │ > let row = > │ > [[ > │ > result.Input > │ > result.Expected > │ > result.Result > │ > best > │ > ]] > │ > let color = > │ > match result.Expected = result.Result > with > │ > | true -> Some ConsoleColor.DarkGreen > │ > | false -> Some ConsoleColor.DarkRed > │ > row, color > │ > ) > │ > let header = > │ > [[ > │ > [[ > │ > "Input" > │ > "Expected" > │ > "Result" > │ > "Best" > │ > ]] > │ > [[ > │ > "---" > │ > "---" > │ > "---" > │ > "---" > │ > ]] > │ > ]] > │ > |> List.map (fun row -> row, None) > │ > header @ rows > │ > > │ > let formattedTable = > │ > let lengthMap = > │ > table > │ > |> List.map fst > │ > |> List.transpose > │ > |> List.map (fun column -> > │ > column > │ > |> List.map String.length > │ > |> List.sortDescending > │ > |> List.tryHead > │ > |> Option.defaultValue 0 > │ > ) > │ > |> List.indexed > │ > |> Map.ofList > │ > table > │ > |> List.map (fun (row, color) -> > │ > let newRow = > │ > row > │ > |> List.mapi (fun i cell -> > │ > cell.PadRight lengthMap.[[i]] > │ > ) > │ > newRow, color > │ > ) > │ > > │ > printfn "" > │ > formattedTable > │ > |> List.iter (fun (row, color) -> > │ > match color with > │ > | Some color -> Console.ForegroundColor <- color > │ > | None -> Console.ResetColor () > │ > > │ > printfn "%s" (String.Join ("\t| ", row)) > │ > > │ > Console.ResetColor () > │ > ) > │ > > │ > let averages = > │ > resultList > │ > |> List.map (fun result -> result.TimeList |> > List.map float) > │ > |> List.transpose > │ > |> List.map List.average > │ > |> List.map int64 > │ > |> List.indexed > │ > > │ > printfn "" > │ > printfn "Average Ranking " > │ > averages > │ > |> List.sortBy snd > │ > |> List.iter (fun (i, avg) -> > │ > printfn $"Test case %d{i + 1}. Average Time: > %A{avg} " > │ > ) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable _count = > │ > if ("CI" |> System.Environment.GetEnvironmentVariable > |> fun x -> $"%A{x}") > │ > <> "<null>" > │ > then 2000000 > │ > else 2000 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl is_fast () = > │ > false > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## empty3Tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty3 > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 91L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 56L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, > 91) > │ > │ (a, a) | a | a | (1, > 56) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 73L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 73L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a, _b) -> > │ > a > │ > ]] > │ > let testCases = seq { > │ > ("a", "a"), "a" > │ > ("a", "a"), "a" > │ > } > │ > let rec empty3Tests = runAll (nameof empty3Tests) _count > solutions testCases > │ > empty3Tests > │ > |> sortResultList > │ > > │ > ── [ 312.21ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: empty3Tests > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 1L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, 1) > │ > │ (a, a) | a | a | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## empty2Tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty2 > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 59L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 53L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ (a, a) | a | a | > (1, 59) > │ > │ (a, a) | a | a | > (1, 53) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 56L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 56L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a, _b) -> > │ > a > │ > ]] > │ > let testCases = seq { > │ > ("a", "a"), "a" > │ > ("a", "a"), "a" > │ > } > │ > let rec empty2Tests = runAll (nameof empty2Tests) _count > solutions testCases > │ > empty2Tests > │ > |> sortResultList > │ > > │ > ── [ 270.32ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: empty2Tests > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, 0) > │ > │ (a, a) | a | a | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## emptyTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 61L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 62L > │ > │ > │ > │ Solution: 5 > │ > │ Test case 1. A. Time: 70L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ 0 | 0 | 0 | > (1, 61) > │ > │ 2 | 2 | 2 | > (1, 62) > │ > │ 5 | 5 | 5 | > (1, 70) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 64L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 64L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun n -> > │ > n + 0 > │ > ]] > │ > let testCases = seq { > │ > 0, 0 > │ > 2, 2 > │ > 5, 5 > │ > } > │ > let rec emptyTests = runAll (nameof emptyTests) _count > solutions testCases > │ > emptyTests > │ > |> sortResultList > │ > > │ > ── [ 383.64ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: emptyTests > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 5 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 0 | 0 | 0 | (1, 0) > │ > │ 2 | 2 | 2 | (1, 0) > │ > │ 5 | 5 | 5 | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## uniqueLettersTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: UniqueLetters > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 1512L > │ > │ Test case 2. B. Time: 1947L > │ > │ Test case 3. C. Time: 2023L > │ > │ Test case 4. D. Time: 1358L > │ > │ Test case 5. E. Time: 1321L > │ > │ Test case 6. F. Time: 1346L > │ > │ Test case 7. G. Time: 1304L > │ > │ Test case 8. H. Time: 1383L > │ > │ Test case 9. I. Time: 1495L > │ > │ Test case 10. J. Time: 1245L > │ > │ Test case 11. K. Time: 1219L > │ > │ > │ > │ Solution: accabb > │ > │ Test case 1. A. Time: 1648L > │ > │ Test case 2. B. Time: 2061L > │ > │ Test case 3. C. Time: 2413L > │ > │ Test case 4. D. Time: 1561L > │ > │ Test case 5. E. Time: 1593L > │ > │ Test case 6. F. Time: 1518L > │ > │ Test case 7. G. Time: 1415L > │ > │ Test case 8. H. Time: 1510L > │ > │ Test case 9. I. Time: 1445L > │ > │ Test case 10. J. Time: 1636L > │ > │ Test case 11. K. Time: 1317L > │ > │ > │ > │ Solution: pprrqqpp > │ > │ Test case 1. A. Time: 2255L > │ > │ Test case 2. B. Time: 2408L > │ > │ Test case 3. C. Time: 2393L > │ > │ Test case 4. D. Time: 1675L > │ > │ Test case 5. E. Time: 1911L > │ > │ Test case 6. F. Time: 2126L > │ > │ Test case 7. G. Time: 1504L > │ > │ Test case 8. H. Time: 1715L > │ > │ Test case 9. I. Time: 1537L > │ > │ Test case 10. J. Time: 1522L > │ > │ Test case 11. K. Time: 1322L > │ > │ > │ > │ Solution: > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > │ Test case 1. A. Time: 13073L > │ > │ Test case 2. B. Time: 11519L > │ > │ Test case 3. C. Time: 8373L > │ > │ Test case 4. D. Time: 5860L > │ > │ Test case 5. E. Time: 6490L > │ > │ Test case 6. F. Time: 6325L > │ > │ Test case 7. G. Time: 5799L > │ > │ Test case 8. H. Time: 7099L > │ > │ Test case 9. I. Time: 6133L > │ > │ Test case 10. J. Time: 5993L > │ > │ Test case 11. K. Time: 2040L > │ > │ > │ > │ Input > │ > | Expected | Result | Best > │ > │ --- > │ > | --- | --- | --- > │ > │ abc > │ > | abc | abc | (11, 1219) > │ > │ accabb > │ > | acb | acb | (11, 1317) > │ > │ pprrqqpp > │ > | prq | prq | (11, 1322) > │ > │ > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > | acb | acb | (11, 2040) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 4622L > │ > │ Test case 2. Average Time: 4483L > │ > │ Test case 3. Average Time: 3800L > │ > │ Test case 4. Average Time: 2613L > │ > │ Test case 5. Average Time: 2828L > │ > │ Test case 6. Average Time: 2828L > │ > │ Test case 7. Average Time: 2505L > │ > │ Test case 8. Average Time: 2926L > │ > │ Test case 9. Average Time: 2652L > │ > │ Test case 10. Average Time: 2599L > │ > │ Test case 11. Average Time: 1474L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 4622L > │ > │ Test case 2. Average Time: 4483L > │ > │ Test case 3. Average Time: 3800L > │ > │ Test case 8. Average Time: 2926L > │ > │ Test case 5. Average Time: 2828L > │ > │ Test case 6. Average Time: 2828L > │ > │ Test case 9. Average Time: 2652L > │ > │ Test case 4. Average Time: 2613L > │ > │ Test case 10. Average Time: 2599L > │ > │ Test case 7. Average Time: 2505L > │ > │ Test case 11. Average Time: 1474L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun acc x -> if List.contains x acc > then acc else acc @ [[ > │ > x ]]) [[]] > │ > |> Seq.toArray > │ > |> String > │ > > │ > "B", > │ > fun input -> > │ > input > │ > |> Seq.rev > │ > |> fun list -> Seq.foldBack (fun x acc -> if > List.contains x acc then > │ > acc else x :: acc) list [[]] > │ > |> Seq.rev > │ > |> Seq.toArray > │ > |> String > │ > > │ > "C", > │ > fun input -> > │ > input > │ > |> Seq.rev > │ > |> fun list -> Seq.foldBack (fun x (set, acc) -> if > Set.contains x set > │ > then set, acc else set.Add x, x :: acc) list (Set.empty, > [[]]) > │ > |> snd > │ > |> Seq.rev > │ > |> Seq.toArray > │ > |> String > │ > > │ > "D", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, Array.append acc [[| x |]]) (Set.empty, > [[||]]) > │ > |> snd > │ > |> String > │ > > │ > "E", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, x :: acc) (Set.empty, [[]]) > │ > |> snd > │ > |> List.rev > │ > |> List.toArray > │ > |> String > │ > > │ > "F", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) > │ > |> snd > │ > |> List.toArray > │ > |> String > │ > > │ > "G", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, x :: acc) (Set.empty, [[]]) > │ > |> snd > │ > |> List.toArray > │ > |> Array.rev > │ > |> String > │ > > │ > "H", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> (loop (set.Add head) > tail) @ [[ head ]] > │ > | [[]] -> [[]] > │ > loop Set.empty list > │ > |> List.rev > │ > |> List.toArray > │ > |> String > │ > > │ > "I", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> loop (set.Add head) tail > |> Array.append [[| > │ > head |]] > │ > | [[]] -> [[||]] > │ > loop Set.empty list > │ > |> String > │ > > │ > "J", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> head :: loop (set.Add > head) tail > │ > | [[]] -> [[]] > │ > loop Set.empty list > │ > |> List.toArray > │ > |> String > │ > > │ > "K", > │ > fun input -> > │ > input > │ > |> Seq.distinct > │ > |> Seq.toArray > │ > |> String > │ > ]] > │ > let testCases = seq { > │ > "abc", "abc" > │ > "accabb", "acb" > │ > "pprrqqpp", "prq" > │ > > │ > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > ", "acb" > │ > } > │ > let rec uniqueLettersTests = runAll (nameof > uniqueLettersTests) _count solutions > │ > testCases > │ > uniqueLettersTests > │ > |> sortResultList > │ > > │ > ── [ 5.56s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: uniqueLettersTests > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 2L > │ > │ Test case 2. B. Time: 3L > │ > │ Test case 3. C. Time: 3L > │ > │ Test case 4. D. Time: 1L > │ > │ Test case 5. E. Time: 1L > │ > │ Test case 6. F. Time: 1L > │ > │ Test case 7. G. Time: 1L > │ > │ Test case 8. H. Time: 1L > │ > │ Test case 9. I. Time: 3L > │ > │ Test case 10. J. Time: 1L > │ > │ Test case 11. K. Time: 1L > │ > │ > │ > │ Solution: accabb > │ > │ Test case 1. A. Time: 1L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 4L > │ > │ Test case 4. D. Time: 0L > │ > │ Test case 5. E. Time: 0L > │ > │ Test case 6. F. Time: 0L > │ > │ Test case 7. G. Time: 0L > │ > │ Test case 8. H. Time: 0L > │ > │ Test case 9. I. Time: 0L > │ > │ Test case 10. J. Time: 0L > │ > │ Test case 11. K. Time: 0L > │ > │ > │ > │ Solution: pprrqqpp > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 1L > │ > │ Test case 4. D. Time: 0L > │ > │ Test case 5. E. Time: 0L > │ > │ Test case 6. F. Time: 0L > │ > │ Test case 7. G. Time: 0L > │ > │ Test case 8. H. Time: 1L > │ > │ Test case 9. I. Time: 0L > │ > │ Test case 10. J. Time: 0L > │ > │ Test case 11. K. Time: 0L > │ > │ > │ > │ Solution: > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb[3 > 8;2;38;140;38m│ Test case 1. A. Time: 4L > │ > │ Test case 2. B. Time: 5L > │ > │ Test case 3. C. Time: 7L > │ > │ Test case 4. D. Time: 4L > │ > │ Test case 5. E. Time: 4L > │ > │ Test case 6. F. Time: 4L > │ > │ Test case 7. G. Time: 4L > │ > │ Test case 8. H. Time: 3L > │ > │ Test case 9. I. Time: 3L > │ > │ Test case 10. J. Time: 4L > │ > │ Test case 11. K. Time: 2L > │ > │ > │ > │ Input > │ > | Expected | Result | Best > │ > │ --- > │ > | --- | --- | --- > │ > │ abc > │ > | abc | abc | (4, 1) > │ > │ accabb > │ > | acb | acb | (4, 0) > │ > │ pprrqqpp > │ > | prq | prq | (1, 0) > │ > │ > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb | > │ > acb | acb | (11, 2) > │ > │ > │ > │ Average Ranking > │ > │ Test case 11. Average Time: 0L > │ > │ Test case 1. Average Time: 1L > │ > │ Test case 4. Average Time: 1L > │ > │ Test case 5. Average Time: 1L > │ > │ Test case 6. Average Time: 1L > │ > │ Test case 7. Average Time: 1L > │ > │ Test case 8. Average Time: 1L > │ > │ Test case 9. Average Time: 1L > │ > │ Test case 10. Average Time: 1L > │ > │ Test case 2. Average Time: 2L > │ > │ Test case 3. Average Time: 3L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## rotateStringsTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ > https://www.hackerrank.com/challenges/rotate-string/forum > │ > │ > │ > │ Test: RotateStrings > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 1842L > │ > │ Test case 2. B. Time: 1846L > │ > │ Test case 3. C. Time: 1936L > │ > │ Test case 4. CA. Time: 2224L > │ > │ Test case 5. CB. Time: 2329L > │ > │ Test case 6. D. Time: 2474L > │ > │ Test case 7. E. Time: 1664L > │ > │ Test case 8. F. Time: 1517L > │ > │ Test case 9. FA. Time: 1651L > │ > │ Test case 10. FB. Time: 3764L > │ > │ Test case 11. FC. Time: 5415L > │ > │ > │ > │ Solution: abcde > │ > │ Test case 1. A. Time: 3356L > │ > │ Test case 2. B. Time: 2592L > │ > │ Test case 3. C. Time: 2346L > │ > │ Test case 4. CA. Time: 2997L > │ > │ Test case 5. CB. Time: 3061L > │ > │ Test case 6. D. Time: 4051L > │ > │ Test case 7. E. Time: 1905L > │ > │ Test case 8. F. Time: 1771L > │ > │ Test case 9. FA. Time: 2175L > │ > │ Test case 10. FB. Time: 3275L > │ > │ Test case 11. FC. Time: 5266L > │ > │ > │ > │ Solution: abcdefghi > │ > │ Test case 1. A. Time: 4492L > │ > │ Test case 2. B. Time: 3526L > │ > │ Test case 3. C. Time: 3583L > │ > │ Test case 4. CA. Time: 3711L > │ > │ Test case 5. CB. Time: 4783L > │ > │ Test case 6. D. Time: 7557L > │ > │ Test case 7. E. Time: 3452L > │ > │ Test case 8. F. Time: 3050L > │ > │ Test case 9. FA. Time: 3275L > │ > │ Test case 10. FB. Time: 4635L > │ > │ Test case 11. FC. Time: 5616L > │ > │ > │ > │ Solution: abab > │ > │ Test case 1. A. Time: 2093L > │ > │ Test case 2. B. Time: 1843L > │ > │ Test case 3. C. Time: 1746L > │ > │ Test case 4. CA. Time: 2085L > │ > │ Test case 5. CB. Time: 2139L > │ > │ Test case 6. D. Time: 2095L > │ > │ Test case 7. E. Time: 1723L > │ > │ Test case 8. F. Time: 1558L > │ > │ Test case 9. FA. Time: 1620L > │ > │ Test case 10. FB. Time: 2319L > │ > │ Test case 11. FC. Time: 3918L > │ > │ > │ > │ Solution: aa > │ > │ Test case 1. A. Time: 1107L > │ > │ Test case 2. B. Time: 1241L > │ > │ Test case 3. C. Time: 1183L > │ > │ Test case 4. CA. Time: 1563L > │ > │ Test case 5. CB. Time: 1525L > │ > │ Test case 6. D. Time: 1591L > │ > │ Test case 7. E. Time: 1327L > │ > │ Test case 8. F. Time: 1151L > │ > │ Test case 9. FA. Time: 1180L > │ > │ Test case 10. FB. Time: 1733L > │ > │ Test case 11. FC. Time: 2817L > │ > │ > │ > │ Solution: z > │ > │ Test case 1. A. Time: 816L > │ > │ Test case 2. B. Time: 745L > │ > │ Test case 3. C. Time: 928L > │ > │ Test case 4. CA. Time: 1375L > │ > │ Test case 5. CB. Time: 1029L > │ > │ Test case 6. D. Time: 852L > │ > │ Test case 7. E. Time: 712L > │ > │ Test case 8. F. Time: 263L > │ > │ Test case 9. FA. Time: 232L > │ > │ Test case 10. FB. Time: 773L > │ > │ Test case 11. FC. Time: 1789L > │ > │ > │ > │ Input | Expected > │ > > │ > | Result > │ > > │ > | Best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ abc | bca cab abc > │ > > │ > | bca cab abc > │ > > │ > | (8, 1517) > │ > │ abcde | bcdea cdeab deabc > eabcd abcde > │ > | bcdea cdeab deabc eabcd abcde > │ > | (8, 1771) > │ > │ abcdefghi | bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | > bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi | > │ > (8, 3050) > │ > │ abab | baba abab baba abab > │ > | baba abab baba abab > │ > | (8, 1558) > │ > │ aa | aa aa > │ > > │ > | aa aa > │ > > │ > | (1, 1107) > │ > │ z | z > │ > > │ > | z > │ > > │ > | (9, 232) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 2284L > │ > │ Test case 2. Average Time: 1965L > │ > │ Test case 3. Average Time: 1953L > │ > │ Test case 4. Average Time: 2325L > │ > │ Test case 5. Average Time: 2477L > │ > │ Test case 6. Average Time: 3103L > │ > │ Test case 7. Average Time: 1797L > │ > │ Test case 8. Average Time: 1551L > │ > │ Test case 9. Average Time: 1688L > │ > │ Test case 10. Average Time: 2749L > │ > │ Test case 11. Average Time: 4136L > │ > │ > │ > │ Ranking > │ > │ Test case 11. Average Time: 4136L > │ > │ Test case 6. Average Time: 3103L > │ > │ Test case 10. Average Time: 2749L > │ > │ Test case 5. Average Time: 2477L > │ > │ Test case 4. Average Time: 2325L > │ > │ Test case 1. Average Time: 2284L > │ > │ Test case 2. Average Time: 1965L > │ > │ Test case 3. Average Time: 1953L > │ > │ Test case 7. Average Time: 1797L > │ > │ Test case 9. Average Time: 1688L > │ > │ Test case 8. Average Time: 1551L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (input: string) -> > │ > let resultList = > │ > List.fold (fun acc x -> > │ > let rotate (text: string) (letter: string) > = (text |> > │ > SpiralSm.slice 1 (input.Length - 1)) + letter > │ > [[ rotate (if acc.IsEmpty then input else > acc.Head) (string x) > │ > ]] @ acc > │ > ) [[]] (Seq.toList input) > │ > > │ > (resultList, "") > │ > ||> List.foldBack (fun acc x -> x + acc + " ") > │ > |> _.TrimEnd() > │ > > │ > "B", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun (acc: string list) letter -> > │ > let last = > │ > if acc.IsEmpty > │ > then input > │ > else acc.Head > │ > > │ > let item = last.[[1 .. input.Length - 1]] + > string letter > │ > > │ > item :: acc > │ > ) [[]] > │ > |> List.rev > │ > |> SpiralSm.concat " " > │ > > │ > "C", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun (acc: string list) letter -> > acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > |> List.rev > │ > |> List.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "CA", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (acc: string list) letter -> > acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > |> Seq.rev > │ > |> Seq.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "CB", > │ > fun input -> > │ > input > │ > |> Seq.toArray > │ > |> Array.fold (fun (acc: string[[]]) letter -> acc > |> Array.append [[| > │ > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) > [[| input |]] > │ > |> Array.rev > │ > |> Array.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "D", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop (acc: char list list) = function > │ > | _ when acc.Length = list.Length -> acc > │ > | head :: tail -> > │ > let item = tail @ [[ head ]] > │ > loop (item :: acc) item > │ > | [[]] -> [[]] > │ > loop [[]] list > │ > |> List.rev > │ > |> List.map (List.toArray >> String) > │ > |> SpiralSm.concat " " > │ > > │ > "E", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop (last: string) = function > │ > | head :: tail -> > │ > let item = last.[[1 .. input.Length - > 1]] + string head > │ > item :: loop item tail > │ > | [[]] -> [[]] > │ > loop input list > │ > |> SpiralSm.concat " " > │ > > │ > "F", > │ > fun input -> > │ > Array.singleton 0 > │ > |> Array.append [[| 1 .. input.Length - 1 |]] > │ > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ > .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FA", > │ > fun input -> > │ > List.singleton 0 > │ > |> List.append [[ 1 .. input.Length - 1 ]] > │ > |> List.map (fun i -> input.[[ i .. ]] + input.[[ > .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FB", > │ > fun input -> > │ > Seq.singleton 0 > │ > |> Seq.append (seq { 1 .. input.Length - 1 }) > │ > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. > i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FC", > │ > fun input -> > │ > Array.singleton 0 > │ > |> Array.append [[| 1 .. input.Length - 1 |]] > │ > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > ]] > │ > let testCases = seq { > │ > "abc", "bca cab abc" > │ > "abcde", "bcdea cdeab deabc eabcd abcde" > │ > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef > │ > hiabcdefg iabcdefgh abcdefghi" > │ > "abab", "baba abab baba abab" > │ > "aa", "aa aa" > │ > "z", "z" > │ > } > │ > let rec rotateStringsTests = runAll (nameof > rotateStringsTests) _count solutions > │ > testCases > │ > rotateStringsTests > │ > |> sortResultList > │ > > │ > ── [ 8.20s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: rotateStringsTests > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 2L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 1L > │ > │ Test case 4. CA. Time: 3L > │ > │ Test case 5. CB. Time: 1L > │ > │ Test case 6. D. Time: 2L > │ > │ Test case 7. E. Time: 1L > │ > │ Test case 8. F. Time: 1L > │ > │ Test case 9. FA. Time: 1L > │ > │ Test case 10. FB. Time: 5L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: abcde > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 1L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 1L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: abcdefghi > │ > │ Test case 1. A. Time: 1L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 1L > │ > │ Test case 5. CB. Time: 1L > │ > │ Test case 6. D. Time: 3L > │ > │ Test case 7. E. Time: 1L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: abab > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 1L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 1L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: aa > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 0L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 1L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 0L > │ > │ Test case 11. FC. Time: 1L > │ > │ > │ > │ Solution: z > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 0L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 0L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 0L > │ > │ Test case 11. FC. Time: 1L > │ > │ > │ > │ Input | Expected > │ > | Result > │ > > │ > | Best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ abc | bca cab abc > │ > | bca cab abc > │ > | (2, 1) > │ > │ abcde | bcdea cdeab deabc eabcd abcde > │ > | bcdea cdeab deabc eabcd abcde > │ > | (1, 0) > │ > │ abcdefghi | bcdefghia cdefghiab defghiabc > efghiabcd fghiabcde > │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (2, 0) > │ > │ abab | baba abab baba abab > │ > | baba abab baba abab > │ > | (1, 0) > │ > │ aa | aa aa > │ > > │ > | aa aa > │ > > │ > | (1, 0) > │ > │ z | z > │ > > │ > | z > │ > > │ > | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ Test case 2. Average Time: 0L > │ > │ Test case 3. Average Time: 0L > │ > │ Test case 5. Average Time: 0L > │ > │ Test case 7. Average Time: 0L > │ > │ Test case 8. Average Time: 0L > │ > │ Test case 9. Average Time: 0L > │ > │ Test case 4. Average Time: 1L > │ > │ Test case 6. Average Time: 1L > │ > │ Test case 10. Average Time: 1L > │ > │ Test case 11. Average Time: 1L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## rotate_strings_tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ``` > │ > │ 02:21:12 verbose #1 > benchmark.run_all / {count = > │ > 2000000; test_name = rotate_strings_tests} > │ > │ > │ > │ 02:21:12 verbose #2 benchmark.run > / {input_str = > │ > "abc"} > │ > │ 02:21:13 verbose #3 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 638} > │ > │ 02:21:14 verbose #4 benchmark.run > / solutions.map / {i > │ > = 2; test_name = FA; time = 779} > │ > │ > │ > │ 02:21:14 verbose #5 benchmark.run > / {input_str = > │ > "abcde"} > │ > │ 02:21:15 verbose #6 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 745} > │ > │ 02:21:16 verbose #7 benchmark.run > / solutions.map / {i > │ > = 2; test_name = FA; time = 809} > │ > │ > │ > │ 02:21:16 verbose #8 benchmark.run > / {input_str = > │ > "abcdefghi"} > │ > │ 02:21:17 verbose #9 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 1092} > │ > │ 02:21:18 verbose #10 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 1304} > │ > │ > │ > │ 02:21:18 verbose #11 > benchmark.run / {input_str = > │ > "abab"} > │ > │ 02:21:19 verbose #12 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 536} > │ > │ 02:21:20 verbose #13 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 620} > │ > │ > │ > │ 02:21:20 verbose #14 > benchmark.run / {input_str = > │ > "aa"} > │ > │ 02:21:21 verbose #15 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 365} > │ > │ 02:21:21 verbose #16 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 396} > │ > │ > │ > │ 02:21:21 verbose #17 > benchmark.run / {input_str = "z"} > │ > │ 02:21:22 verbose #18 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 158} > │ > │ 02:21:22 verbose #19 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 143} > │ > │ ``` > │ > │ input | expected > │ > > │ > | result > │ > > │ > | best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ "abc" | "bca cab abc" > │ > | "bca cab abc" > │ > | 1, 638 > │ > │ "abcde" | "bcdea cdeab deabc eabcd > abcde" > │ > | "bcdea cdeab deabc eabcd abcde" > │ > | 1, 745 > │ > │ "abcdefghi" | "bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | > "bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi" | 1, 1092 > │ > │ "abab" | "baba abab baba abab" > │ > | "baba abab baba abab" > │ > | 1, 536 > │ > │ "aa" | "aa aa" > │ > > │ > | "aa aa" > │ > > │ > | 1, 365 > │ > │ "z" | "z" > │ > > │ > | "z" > │ > > │ > | 2, 143 > │ > │ ``` > │ > │ 02:21:22 verbose #20 > benchmark.sort_result_list / > │ > averages.iter / {avg = 589; i = 1} > │ > │ 02:21:22 verbose #21 > benchmark.sort_result_list / > │ > averages.iter / {avg = 675; i = 2} > │ > │ ``` > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// timeout=60000 > │ > > │ > inl get_solutions () = > │ > [[ > │ > // "A", > │ > // fun (input : string) => > │ > // let resultList = > │ > // List.fold (fun acc x => > │ > // let rotate (text : string) (letter : > string) = > │ > text.Substring (1, input.Length - 1) + letter > │ > // [[ rotate (if acc.IsEmpty then input > else acc.Head) > │ > (string x) ]] ++ acc > │ > // ) [[]] (Seq.toList input) > │ > > │ > // List.foldBack (fun acc x => x + acc + " ") > resultList "" > │ > // |> fun x => x.TrimEnd () > │ > > │ > // "B", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> List.fold (fun (acc : string list) letter > => > │ > // let last = > │ > // if acc.IsEmpty > │ > // then input > │ > // else acc.Head > │ > > │ > // let item = last.[[1 .. input.Length - > 1]] + string letter > │ > > │ > // item :: acc > │ > // ) [[]] > │ > // |> List.rev > │ > // |> SpiralSm.concat " " > │ > > │ > // "C", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> List.fold (fun (acc : list string) letter > => acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > // |> List.rev > │ > // |> List.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "CA", > │ > // fun input => > │ > // input > │ > // |> Seq.fold (fun (acc : list string) letter > => acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > // |> Seq.rev > │ > // |> Seq.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "CB", > │ > // fun input => > │ > // input > │ > // |> Seq.toArray > │ > // |> Array.fold (fun (acc : a _ string) letter > => acc |> > │ > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + > string letter ]])) > │ > (a ;[[ input ]]) > │ > // |> Array.rev > │ > // |> Array.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "D", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> fun list => > │ > // let rec loop (acc : list (list char)) = > function > │ > // | _ when acc.Length = list.Length => > acc > │ > // | head :: tail => > │ > // let item = tail ++ [[ head ]] > │ > // loop (item :: acc) item > │ > // | [[]] => [[]] > │ > // loop [[]] list > │ > // |> List.rev > │ > // |> List.map (List.toArray >> String) > │ > // |> SpiralSm.concat " " > │ > > │ > // "E", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> fun list => > │ > // let rec loop (last : string) = function > │ > // | head :: tail => > │ > // let item = last.[[1 .. > input.Length - 1]] + string > │ > head > │ > // item :: loop item tail > │ > // | [[]] => [[]] > │ > // loop input list > │ > // |> SpiralSm.concat " " > │ > > │ > "F", > │ > fun input => > │ > // Array.singleton 0 > │ > // |> Array.append [[| 1 .. input.Length - 1 |]] > │ > // |> Array.map (fun i -> input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > inl input_length = input |> sm.length > │ > am.singleton 0i32 > │ > |> am.append (am'.init_series 1 (input_length - > 1) 1 |> fun x => a x > │ > : _ int _) > │ > |> fun (a x) => x > │ > |> am'.map_base fun i => > │ > inl a = input |> sm'.slice i (input_length > - 1) > │ > inl b = input |> sm'.slice 0 (i - 1) > │ > a +. b > │ > |> fun x => a x : _ int _ > │ > |> seq.of_array > │ > |> sm'.concat " " > │ > > │ > "FA", > │ > fun input => > │ > // List.singleton 0 > │ > // |> List.append [[ 1 .. input.Length - 1 ]] > │ > // // |> List.map (fun i => input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > inl input_length = input |> sm.length > │ > listm.singleton 0i32 > │ > |> listm.append (listm'.init_series 1 > (input_length - 1) 1) > │ > |> listm.map (fun i => > │ > inl a = input |> sm'.slice i (input_length > - 1) > │ > inl b = if i = 0 then "" else input |> > sm'.slice 0 (i - 1) > │ > a +. b > │ > ) > │ > |> listm'.box > │ > |> listm'.to_array' > │ > |> fun x => a x : _ int _ > │ > |> seq.of_array > │ > |> sm'.concat " " > │ > > │ > // "FB", > │ > // fun input => > │ > // Seq.singleton 0 > │ > // // |> Seq.append (seq { 1 .. input.Length - 1 > }) > │ > // // |> Seq.map (fun i => input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > > │ > // "FC", > │ > // fun input => > │ > // Array.singleton 0 > │ > // |> Array.append (a ;[[ 1 .. input.Length - 1 > ]]) > │ > //// |> Array.Parallel.map (fun i => input.[[ i > .. ]] + input.[[ .. i > │ > - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > ]] > │ > > │ > inl rec rotate_strings_tests () = > │ > inl test_cases = [[ > │ > "abc", "bca cab abc" > │ > "abcde", "bcdea cdeab deabc eabcd abcde" > │ > "abcdefghi", "bcdefghia cdefghiab defghiabc > efghiabcd fghiabcde > │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi" > │ > "abab", "baba abab baba abab" > │ > "aa", "aa aa" > │ > "z", "z" > │ > ]] > │ > > │ > inl solutions = get_solutions () > │ > > │ > // inl is_fast () = true > │ > > │ > inl count = > │ > if is_fast () > │ > then 1000i32 > │ > else 2000000i32 > │ > > │ > run_all (reflection.nameof { rotate_strings_tests }) > count solutions > │ > test_cases > │ > |> sort_result_list > │ > > │ > rotate_strings_tests () > │ > > │ > ── [ 10.07s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ > │ > │ ``` > │ > │ 00:00:00 v #1 benchmark.run_all / { > test_name = > │ > rotate_strings_tests; count = 2000000 } > │ > │ > │ > │ 00:00:00 v #2 benchmark.run / { > input_str = "abc" } > │ > │ 00:00:00 v #3 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 367 } > │ > │ 00:00:01 v #4 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 528 } > │ > │ > │ > │ 00:00:01 v #5 benchmark.run / { > input_str = "abcde" } > │ > │ 00:00:01 v #6 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 444 } > │ > │ 00:00:02 v #7 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 752 } > │ > │ > │ > │ 00:00:02 v #8 benchmark.run / { > input_str = "abcdefghi" > │ > } > │ > │ 00:00:03 v #9 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 725 } > │ > │ 00:00:05 v #10 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 1186 } > │ > │ > │ > │ 00:00:05 v #11 benchmark.run / { > input_str = "abab" } > │ > │ 00:00:05 v #12 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 434 } > │ > │ 00:00:06 v #13 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 651 } > │ > │ > │ > │ 00:00:06 v #14 benchmark.run / { > input_str = "aa" } > │ > │ 00:00:07 v #15 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 236 } > │ > │ 00:00:07 v #16 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 369 } > │ > │ > │ > │ 00:00:07 v #17 benchmark.run / { > input_str = "z" } > │ > │ 00:00:07 v #18 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 111 } > │ > │ 00:00:08 v #19 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 138 } > │ > │ ``` > │ > │ input | expected > │ > > │ > | result > │ > > │ > | best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ "abc" | "bca cab abc" > │ > | "bca cab abc" > │ > | 1, 367 > │ > │ "abcde" | "bcdea cdeab deabc eabcd > abcde" > │ > | "bcdea cdeab deabc eabcd abcde" > │ > | 1, 444 > │ > │ "abcdefghi" | "bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | > "bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi" | 1, 725 > │ > │ "abab" | "baba abab baba abab" > │ > | "baba abab baba abab" > │ > | 1, 434 > │ > │ "aa" | "aa aa" > │ > > │ > | "aa aa" > │ > > │ > | 1, 236 > │ > │ "z" | "z" > │ > > │ > | "z" > │ > > │ > | 1, 111 > │ > │ ``` > │ > │ 00:00:08 v #20 > benchmark.sort_result_list / > │ > averages.iter / { i = 1; avg = 386 } > │ > │ 00:00:08 v #21 > benchmark.sort_result_list / > │ > averages.iter / { i = 2; avg = 604 } > │ > │ ``` > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > // rotate_strings_tests () > │ > () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## binary_search_tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ``` > │ > │ 02:19:29 verbose #1 > benchmark.run_all / {count = > │ > 10000000; test_name = binary_search_tests} > │ > │ > │ > │ 02:19:29 verbose #2 benchmark.run > / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ > │ 02:19:30 verbose #3 benchmark.run > / solutions.map / {i > │ > = 1; test_name = semi_open_1; time = 662} > │ > │ 02:19:30 verbose #4 benchmark.run > / solutions.map / {i > │ > = 2; test_name = closed_1; time = 619} > │ > │ 02:19:31 verbose #5 benchmark.run > / solutions.map / {i > │ > = 3; test_name = semi_open_2; time = 644} > │ > │ 02:19:32 verbose #6 benchmark.run > / solutions.map / {i > │ > = 4; test_name = closed_2; time = 610} > │ > │ > │ > │ 02:19:32 verbose #7 benchmark.run > / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ > │ 02:19:33 verbose #8 benchmark.run > / solutions.map / {i > │ > = 1; test_name = semi_open_1; time = 607} > │ > │ 02:19:33 verbose #9 benchmark.run > / solutions.map / {i > │ > = 2; test_name = closed_1; time = 559} > │ > │ 02:19:34 verbose #10 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 612} > │ > │ 02:19:35 verbose #11 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 577} > │ > │ > │ > │ 02:19:35 verbose #12 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ > │ 02:19:35 verbose #13 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 550} > │ > │ 02:19:36 verbose #14 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 580} > │ > │ 02:19:37 verbose #15 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 624} > │ > │ 02:19:37 verbose #16 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 590} > │ > │ > │ > │ 02:19:37 verbose #17 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ > │ 02:19:38 verbose #18 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 574} > │ > │ 02:19:39 verbose #19 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 577} > │ > │ 02:19:39 verbose #20 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 582} > │ > │ 02:19:40 verbose #21 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 585} > │ > │ > │ > │ 02:19:40 verbose #22 > benchmark.run / {input_str = > │ > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)} > │ > │ 02:19:41 verbose #23 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 610} > │ > │ 02:19:42 verbose #24 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 672} > │ > │ 02:19:42 verbose #25 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 636} > │ > │ 02:19:43 verbose #26 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 629} > │ > │ > │ > │ 02:19:43 verbose #27 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ > │ 02:19:44 verbose #28 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 599} > │ > │ 02:19:44 verbose #29 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 561} > │ > │ 02:19:45 verbose #30 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 604} > │ > │ 02:19:46 verbose #31 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 573} > │ > │ > │ > │ 02:19:46 verbose #32 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ > │ 02:19:47 verbose #33 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 635} > │ > │ 02:19:47 verbose #34 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 603} > │ > │ 02:19:48 verbose #35 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 644} > │ > │ 02:19:49 verbose #36 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 628} > │ > │ > │ > │ 02:19:49 verbose #37 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ > │ 02:19:49 verbose #38 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 643} > │ > │ 02:19:50 verbose #39 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 606} > │ > │ 02:19:51 verbose #40 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 636} > │ > │ 02:19:52 verbose #41 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 624} > │ > │ > │ > │ 02:19:52 verbose #42 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ > │ 02:19:52 verbose #43 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 689} > │ > │ 02:19:53 verbose #44 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 613} > │ > │ 02:19:54 verbose #45 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 623} > │ > │ 02:19:55 verbose #46 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 613} > │ > │ > │ > │ 02:19:55 verbose #47 > benchmark.run / {input_str = > │ > struct ([|1; 2; 3; 4...100; ...|], 60, 100)} > │ > │ 02:19:55 verbose #48 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 630} > │ > │ 02:19:56 verbose #49 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 633} > │ > │ 02:19:57 verbose #50 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 653} > │ > │ 02:19:58 verbose #51 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 646} > │ > │ ``` > │ > │ input > | expected | result | > │ > best > │ > │ --- > | --- | --- | > │ > --- > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US4_0 3 | US4_0 3 | > │ > 4, 610 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US4_0 0 | US4_0 0 | > │ > 2, 559 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US4_0 6 | US4_0 6 | > │ > 1, 550 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US4_1 | US4_1 | > │ > 1, 574 > │ > │ struct ([1; 2; 3; 4...00; ...], 60, > 1000) | US4_0 59 | US4_0 59 | > │ > 1, 610 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US4_0 3 | US4_0 3 | > │ > 2, 561 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US4_0 0 | US4_0 0 | > │ > 2, 603 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US4_0 6 | US4_0 6 | > │ > 2, 606 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US4_1 | US4_1 | > │ > 2, 613 > │ > │ struct ([1; 2; 3; 4...100; ...], 60, > 100) | US4_0 59 | US4_0 59 | > │ > 1, 630 > │ > │ ``` > │ > │ 02:19:58 verbose #52 > benchmark.sort_result_list / > │ > averages.iter / {avg = 602; i = 2} > │ > │ 02:19:58 verbose #53 > benchmark.sort_result_list / > │ > averages.iter / {avg = 607; i = 4} > │ > │ 02:19:58 verbose #54 > benchmark.sort_result_list / > │ > averages.iter / {avg = 619; i = 1} > │ > │ 02:19:58 verbose #55 > benchmark.sort_result_list / > │ > averages.iter / {avg = 625; i = 3} > │ > │ ``` > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// timeout=90000 > │ > > │ > inl binary_search_semi_open_1 arr target left right = > │ > inl rec body left right = > │ > if left >= right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left mid > │ > and inl loop left right = > │ > if var_is right |> not > │ > then body left right > │ > else > │ > inl left = dyn left > │ > join body left right > │ > loop left right > │ > > │ > inl binary_search_closed_1 arr target left right = > │ > inl rec body left right = > │ > if left > right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left (mid - 1) > │ > and inl loop left right = > │ > if var_is right |> not > │ > then body left right > │ > else > │ > inl left = dyn left > │ > join body left right > │ > loop left right > │ > > │ > inl binary_search_semi_open_2 arr target left right = > │ > let rec body left right = > │ > if left >= right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left mid > │ > and inl loop left right = body left right > │ > loop left right > │ > > │ > inl binary_search_closed_2 arr target left right = > │ > let rec body left right = > │ > if left > right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left (mid - 1) > │ > and inl loop left right = body left right > │ > loop left right > │ > > │ > inl get_solutions () = > │ > [[ > │ > "semi_open_1", > │ > fun (arr, (target, len)) => > │ > binary_search_semi_open_1 arr target 0 len > │ > > │ > "closed_1", > │ > fun (arr, (target, len)) => > │ > binary_search_closed_1 arr target 0 (len - 1) > │ > > │ > "semi_open_2", > │ > fun (arr, (target, len)) => > │ > binary_search_semi_open_2 arr target 0 len > │ > > │ > "closed_2", > │ > fun (arr, (target, len)) => > │ > binary_search_closed_2 arr target 0 (len - 1) > │ > ]] > │ > > │ > inl rec binary_search_tests () = > │ > inl arr_with_len target len arr = > │ > arr, (target, (len |> optionm'.default_with fun () > => length arr)) > │ > > │ > inl test_cases = [[ > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 > None), (Some 3i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 > None), (Some 0i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 11 None), (Some 6i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 12 None), None > │ > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ > int _) |> arr_with_len > │ > 60 None), (Some 59) > │ > > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 > (Some 7)), (Some > │ > 3i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 > (Some 7)), (Some > │ > 0i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 11 (Some 7)), (Some > │ > 6i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 12 (Some 7)), None > │ > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ > int _) |> arr_with_len > │ > 60 (Some 100)), (Some 59) > │ > ]] > │ > > │ > inl solutions = get_solutions () > │ > > │ > // inl is_fast () = true > │ > > │ > inl count = > │ > if is_fast () > │ > then 1000i32 > │ > else 10000000i32 > │ > > │ > run_all (reflection.nameof { binary_search_tests }) > count solutions > │ > test_cases > │ > |> sort_result_list > │ > > │ > > │ > let main () = > │ > binary_search_tests () > │ > > │ > ── [ 26.14s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ > │ > │ ``` > │ > │ 00:00:00 v #1 benchmark.run_all / { > test_name = > │ > binary_search_tests; count = 10000000 } > │ > │ > │ > │ 00:00:00 v #2 benchmark.run / { > input_str = struct ([|1; > │ > 3; 4; 6; 8; 9; 11|], 6, 7) } > │ > │ 00:00:00 v #3 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 506 } > │ > │ 00:00:01 v #4 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 513 } > │ > │ 00:00:02 v #5 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 501 } > │ > │ 00:00:02 v #6 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 481 } > │ > │ > │ > │ 00:00:02 v #7 benchmark.run / { > input_str = struct ([|1; > │ > 3; 4; 6; 8; 9; 11|], 1, 7) } > │ > │ 00:00:03 v #8 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 502 } > │ > │ 00:00:03 v #9 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 520 } > │ > │ 00:00:04 v #10 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 511 } > │ > │ 00:00:05 v #11 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 531 } > │ > │ > │ > │ 00:00:05 v #12 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ > │ 00:00:05 v #13 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 505 } > │ > │ 00:00:06 v #14 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 512 } > │ > │ 00:00:07 v #15 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 500 } > │ > │ 00:00:07 v #16 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 509 } > │ > │ > │ > │ 00:00:07 v #17 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ > │ 00:00:08 v #18 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 543 } > │ > │ 00:00:09 v #19 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 583 } > │ > │ 00:00:09 v #20 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 549 } > │ > │ 00:00:10 v #21 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 528 } > │ > │ > │ > │ 00:00:10 v #22 benchmark.run / { > input_str = struct > │ > ([|1; 2; 3; 4...00; ...|], 60, 1000) } > │ > │ 00:00:11 v #23 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 648 } > │ > │ 00:00:11 v #24 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 621 } > │ > │ 00:00:12 v #25 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 602 } > │ > │ 00:00:13 v #26 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 626 } > │ > │ > │ > │ 00:00:13 v #27 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) } > │ > │ 00:00:14 v #28 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 461 } > │ > │ 00:00:14 v #29 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 454 } > │ > │ 00:00:15 v #30 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 461 } > │ > │ 00:00:15 v #31 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 444 } > │ > │ > │ > │ 00:00:15 v #32 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) } > │ > │ 00:00:16 v #33 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 520 } > │ > │ 00:00:17 v #34 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 523 } > │ > │ 00:00:17 v #35 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 522 } > │ > │ 00:00:18 v #36 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 408 } > │ > │ > │ > │ 00:00:18 v #37 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ > │ 00:00:18 v #38 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 434 } > │ > │ 00:00:19 v #39 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 413 } > │ > │ 00:00:19 v #40 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 401 } > │ > │ 00:00:20 v #41 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 406 } > │ > │ > │ > │ 00:00:20 v #42 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ > │ 00:00:21 v #43 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 415 } > │ > │ 00:00:21 v #44 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 409 } > │ > │ 00:00:22 v #45 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 411 } > │ > │ 00:00:22 v #46 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 406 } > │ > │ > │ > │ 00:00:22 v #47 benchmark.run / { > input_str = struct > │ > ([|1; 2; 3; 4...100; ...|], 60, 100) } > │ > │ 00:00:23 v #48 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 437 } > │ > │ 00:00:23 v #49 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 421 } > │ > │ 00:00:24 v #50 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 437 } > │ > │ 00:00:24 v #51 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 408 } > │ > │ ``` > │ > │ input > | expected | result | > │ > best > │ > │ --- > | --- | --- | > │ > --- > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US6_0 3 | US6_0 3 | > │ > 4, 481 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US6_0 0 | US6_0 0 | > │ > 1, 502 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US6_0 6 | US6_0 6 | > │ > 3, 500 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US6_1 | US6_1 | > │ > 4, 528 > │ > │ struct ([1; 2; 3; 4...00; ...], 60, > 1000) | US6_0 59 | US6_0 59 | > │ > 3, 602 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US6_0 3 | US6_0 3 | > │ > 4, 444 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US6_0 0 | US6_0 0 | > │ > 4, 408 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US6_0 6 | US6_0 6 | > │ > 3, 401 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US6_1 | US6_1 | > │ > 4, 406 > │ > │ struct ([1; 2; 3; 4...100; ...], 60, > 100) | US6_0 59 | US6_0 59 | > │ > 4, 408 > │ > │ ``` > │ > │ 00:00:24 v #52 > benchmark.sort_result_list / > │ > averages.iter / { i = 4; avg = 474 } > │ > │ 00:00:24 v #53 > benchmark.sort_result_list / > │ > averages.iter / { i = 3; avg = 489 } > │ > │ 00:00:24 v #54 > benchmark.sort_result_list / > │ > averages.iter / { i = 2; avg = 496 } > │ > │ 00:00:24 v #55 > benchmark.sort_result_list / > │ > averages.iter / { i = 1; avg = 497 } > │ > │ ``` > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## returnLettersWithOddCountTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: ReturnLettersWithOddCount > │ > │ > │ > │ Solution: 1 > │ > │ Test case 1. A. Time: 645L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 663L > │ > │ > │ > │ Solution: 3 > │ > │ Test case 1. A. Time: 680L > │ > │ > │ > │ Solution: 9 > │ > │ Test case 1. A. Time: 730L > │ > │ > │ > │ Solution: 10 > │ > │ Test case 1. A. Time: 815L > │ > │ > │ > │ Input | Expected | Result > | Best > │ > │ --- | --- | --- > | --- > │ > │ 1 | a | a > | (1, 645) > │ > │ 2 | ba | ba > | (1, 663) > │ > │ 3 | aaa | aaa > | (1, 680) > │ > │ 9 | aaaaaaaaa | aaaaaaaaa > | (1, 730) > │ > │ 10 | baaaaaaaaa | baaaaaaaaa > | (1, 815) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 706L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 706L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun n -> > │ > let mutable _builder = StringBuilder (new > string('a', n)) > │ > if n % 2 = 0 then > │ > _builder.[[0]] <- 'b' > │ > > │ > _builder.ToString () > │ > ]] > │ > let testCases = seq { > │ > 1, "a" > │ > 2, "ba" > │ > 3, "aaa" > │ > 9, "aaaaaaaaa" > │ > 10, "baaaaaaaaa" > │ > } > │ > let rec returnLettersWithOddCountTests = > │ > runAll (nameof returnLettersWithOddCountTests) _count > solutions testCases > │ > returnLettersWithOddCountTests > │ > |> sortResultList > │ > > │ > ── [ 719.36ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: returnLettersWithOddCountTests > │ > │ > │ > │ Solution: 1 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 9 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 10 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 1 | a | a | (1, 0) > │ > │ 2 | ba | ba | (1, 0) > │ > │ 3 | aaa | aaa | (1, 0) > │ > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 0) > │ > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## hasAnyPairCloseToEachotherTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: HasAnyPairCloseToEachother > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 137L > │ > │ > │ > │ Solution: 1,2 > │ > │ Test case 1. A. Time: 186L > │ > │ > │ > │ Solution: 3,5 > │ > │ Test case 1. A. Time: 206L > │ > │ > │ > │ Solution: 3,4,6 > │ > │ Test case 1. A. Time: 149L > │ > │ > │ > │ Solution: 2,4,6 > │ > │ Test case 1. A. Time: 150L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ 0 | False | False | > (1, 137) > │ > │ 1,2 | True | True | > (1, 186) > │ > │ 3,5 | False | False | > (1, 206) > │ > │ 3,4,6 | True | True | > (1, 149) > │ > │ 2,4,6 | False | False | > (1, 150) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 165L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 165L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a: int[[]]) -> > │ > let indices = System.Linq.Enumerable.Range(0, > a.Length) |> > │ > System.Linq.Enumerable.ToArray > │ > System.Array.Sort (a, indices) > │ > > │ > indices > │ > |> Array.take (a.Length - 1) > │ > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = > 1) > │ > ]] > │ > let testCases = seq { > │ > [[| 0 |]], false > │ > [[| 1; 2 |]], true > │ > [[| 3; 5 |]], false > │ > [[| 3; 4; 6 |]], true > │ > [[| 2; 4; 6 |]], false > │ > } > │ > let rec hasAnyPairCloseToEachotherTests = > │ > runAll (nameof hasAnyPairCloseToEachotherTests) _count > solutions testCases > │ > hasAnyPairCloseToEachotherTests > │ > |> sortResultList > │ > > │ > ── [ 719.62ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: hasAnyPairCloseToEachotherTests > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 1L > │ > │ > │ > │ Solution: 1,2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3,5 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3,4,6 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 2,4,6 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 0 | False | False | (1, 1) > │ > │ 1,2 | True | True | (1, 0) > │ > │ 3,5 | False | False | (1, 0) > │ > │ 3,4,6 | True | True | (1, 0) > │ > │ 2,4,6 | False | False | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ 00:01:11 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 84668 } > │ 00:01:11 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:12 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/perf/Perf.dib.ipynb to html > │ 00:01:12 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:01:12 v #7 ! validate(nb) > │ 00:01:13 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:01:13 v #9 ! return _pygments_highlight( > │ 00:01:14 v #10 ! [NbConvertApp] Writing 458062 bytes to > c:\home\git\polyglot\apps\perf\Perf.dib.html > │ 00:01:14 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 848 } > │ 00:01:14 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 848 } > │ 00:01:14 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:14 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:01:14 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:01:14 d #16 spiral.run / dib / { exit_code = 0; > result_length = 85575 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block > > ── [ 51.06s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # DirTreeHtml (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal > │ > co.Markup.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open SpiralFileSystem.Operators > │ > open Falco.Markup > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type FileSystemNode = > │ > | File of string * string * int64 > │ > | Folder of string * string * FileSystemNode list > │ > | Root of FileSystemNode list > │ > > │ > let rec scanDirectory isRoot (basePath : string) (path : > string) = > │ > let relativePath = > │ > path > │ > |> SpiralSm.replace basePath "" > │ > |> SpiralSm.replace "\\" "/" > │ > |> SpiralSm.replace "//" "/" > │ > |> SpiralSm.trim_start [[| '/' |]] > │ > > │ > let directories = > │ > path > │ > |> System.IO.Directory.GetDirectories > │ > |> Array.toList > │ > |> List.sort > │ > |> List.map (scanDirectory false basePath) > │ > let files = > │ > path > │ > |> System.IO.Directory.GetFiles > │ > |> Array.toList > │ > |> List.sort > │ > |> List.map (fun f -> File > (System.IO.Path.GetFileName f, relativePath, > │ > System.IO.FileInfo(f).Length)) > │ > > │ > let children = directories @ files > │ > if isRoot > │ > then Root children > │ > else Folder (path |> System.IO.Path.GetFileName, > relativePath, children) > │ > > │ > let rec generateHtml fsNode = > │ > let sizeLabel size = > │ > match float size with > │ > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / > 1024.0 / 1024.0} MB" > │ > | size when size > 1024.0 -> $"%.2f{size / 1024.0} > KB" > │ > | size -> $"%.2f{size} B" > │ > match fsNode with > │ > | File (fileName, relativePath, size) -> > │ > Elem.div [[]] [[ > │ > Text.raw "📄 " > │ > Elem.a [[ > │ > Attr.href $"""{relativePath}{if > relativePath = "" then "" else > │ > "/"}{fileName}""" > │ > ]] [[ > │ > Text.raw fileName > │ > ]] > │ > Elem.span [[]] [[ > │ > Text.raw $" ({size |> sizeLabel})" > │ > ]] > │ > ]] > │ > | Folder (folderName, relativePath, children) -> > │ > let size = > │ > let rec loop children = > │ > children > │ > |> List.sumBy (function > │ > | File (_, _, size) -> size > │ > | Folder (_, _, children) > │ > | Root children -> loop children > │ > ) > │ > loop children > │ > Elem.details [[ > │ > Attr.open' "true" > │ > ]] [[ > │ > Elem.summary [[]] [[ > │ > Text.raw "📂 " > │ > Elem.a [[ > │ > Attr.href relativePath > │ > ]] [[ > │ > Text.raw folderName > │ > ]] > │ > Elem.span [[]] [[ > │ > Text.raw $" ({size |> sizeLabel})" > │ > ]] > │ > ]] > │ > Elem.div [[]] [[ > │ > yield! children |> List.map generateHtml > │ > ]] > │ > ]] > │ > | Root children -> > │ > Elem.div [[]] [[ > │ > yield! children |> List.map generateHtml > │ > ]] > │ > > │ > let generateHtmlForFileSystem root = > │ > $"""<!DOCTYPE html> > │ > <html lang="en"> > │ > <head> > │ > <meta charset="UTF-8"> > │ > <style> > │ > body {{ > │ > background-color: #222; > │ > color: #ccc; > │ > }} > │ > a {{ > │ > color: #777; > │ > font-size: 15px; > │ > }} > │ > span {{ > │ > font-size: 11px; > │ > }} > │ > div > div {{ > │ > padding-left: 10px; > │ > }} > │ > details > div {{ > │ > padding-left: 19px; > │ > }} > │ > </style> > │ > </head> > │ > <body> > │ > {root |> generateHtml |> renderNode} > │ > </body> > │ > </html> > │ > """ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let expected = """<!DOCTYPE html> > │ > <html lang="en"> > │ > <head> > │ > <meta charset="UTF-8"> > │ > <style> > │ > body { > │ > background-color: #222; > │ > color: #ccc; > │ > } > │ > a { > │ > color: #777; > │ > font-size: 15px; > │ > } > │ > span { > │ > font-size: 11px; > │ > } > │ > div > div { > │ > padding-left: 10px; > │ > } > │ > details > div { > │ > padding-left: 19px; > │ > } > │ > </style> > │ > </head> > │ > <body> > │ > <div><details open="true"><summary>📂 <a > href="_.root">_.root</a><span> > │ > (10.00 B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3">3</a><span> (6.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2">2</a><span> (3.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2/1">1</a><span> (1.00 > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > </body> > │ > </html> > │ > """ > │ > > │ > let struct (tempFolder, disposable) = expected |> > SpiralCrypto.hash_text |> > │ > SpiralFileSystem.create_temp_dir' > │ > let rec loop d n = async { > │ > if n >= 0 then > │ > tempFolder </> d |> > System.IO.Directory.CreateDirectory |> ignore > │ > do! > │ > n > │ > |> string > │ > |> String.replicate (n + 1) > │ > |> SpiralFileSystem.write_all_text_async > (tempFolder </> d </> > │ > $"file.txt") > │ > do! loop $"{d}/{n}" (n - 1) > │ > } > │ > loop "_.root" 3 > │ > |> Async.RunSynchronously > │ > > │ > let html = > │ > scanDirectory true tempFolder tempFolder > │ > |> generateHtmlForFileSystem > │ > > │ > html > │ > |> _assertEqual expected > │ > > │ > disposable.Dispose () > │ > > │ > html |> > Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent > │ > > │ > ── [ 181.25ms - return value ] > ───────────────────────────────────────────────── > │ > │ <!DOCTYPE html> > │ > │ <html lang="en"> > │ > │ <head> > │ > │ <meta charset="UTF-8"> > │ > │ <style> > │ > │ body { > │ > │ background-color: #222; > │ > │ color: #ccc; > │ > │ } > │ > │ a { > │ > │ color: #777; > │ > │ font-size: 15px; > │ > │ } > │ > │ span { > │ > │ font-size: 11px; > │ > │ } > │ > │ div > div { > │ > │ padding-left: 10px; > │ > │ } > │ > │ details > div { > │ > │ padding-left: 19px; > │ > │ } > │ > │ </style> > │ > │ </head> > │ > │ <body> > │ > │ <div><details > open="true"><summary>📂 <a > │ > href="_.root">_.root</a><span> (10.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3">3</a><span> (6.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2">2</a><span> (3.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2/1">1</a><span> (1.00 > │ > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > │ </body> > │ > │ </html> > │ > │ > │ > > │ > ── [ 185.32ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "<!DOCTYPE html> > │ > │ <html lang="en"> > │ > │ <head> > │ > │ <meta charset="UTF-8"> > │ > │ <style> > │ > │ body { > │ > │ background-color: #222; > │ > │ color: #ccc; > │ > │ } > │ > │ a { > │ > │ color: #777; > │ > │ font-size: 15px; > │ > │ } > │ > │ span { > │ > │ font-size: 11px; > │ > │ } > │ > │ div > div { > │ > │ padding-left: 10px; > │ > │ } > │ > │ details > div { > │ > │ padding-left: 19px; > │ > │ } > │ > │ </style> > │ > │ </head> > │ > │ <body> > │ > │ <div><details > open="true"><summary>📂 <a > │ > href="_.root">_.root</a><span> (10.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3">3</a><span> (6.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2">2</a><span> (3.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2/1">1</a><span> (1.00 > │ > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > │ </body> > │ > │ </html> > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string > │ > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Dir _ -> nameof Dir > │ > | Html _ -> nameof Html > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 81.41ms - return value ] > ────────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] --dir > <string> --html <string> > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --dir <string> Dir > │ > │ --html <string> Html > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let dir = > │ > match argsMap.[[nameof Arguments.Dir]] with > │ > | [[ Arguments.Dir dir ]] -> Some dir > │ > | _ -> None > │ > |> Option.get > │ > > │ > let htmlPath = > │ > match argsMap.[[nameof Arguments.Html]] with > │ > | [[ Arguments.Html html ]] -> Some html > │ > | _ -> None > │ > |> Option.get > │ > > │ > let fileSystem = scanDirectory true dir dir > │ > let html = generateHtmlForFileSystem fileSystem > │ > > │ > html |> SpiralFileSystem.write_all_text_async htmlPath > │ > |> Async.runWithTimeout 30000 > │ > |> function > │ > | Some () -> 0 > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 74.95ms - return value ] > ────────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ 00:00:17 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 13688 } > │ 00:00:17 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:18 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html > │ 00:00:18 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:18 v #7 ! validate(nb) > │ 00:00:19 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:19 v #9 ! return _pygments_highlight( > │ 00:00:19 v #10 ! [NbConvertApp] Writing 310059 bytes to > c:\home\git\polyglot\apps\dir-tree-html\DirTreeHtml.dib.html > │ 00:00:19 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 880 } > │ 00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 880 } > │ 00:00:19 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content > $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:00:19 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:19 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:19 d #16 spiral.run / dib / { exit_code = 0; > result_length = 14627 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > DirTreeHtml.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > DirTreeHtml.dib > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / > code.Length: 4638 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Restored > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 230 ms). > │ 00:00:13 v #7 > DirTreeHtml -> > c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\linux-x64\Dir > TreeHtml.dll > │ 00:00:14 v #8 > DirTreeHtml -> > C:\home\git\polyglot\apps\dir-tree-html\dist\ > │ 00:00:15 d #9 runtime.execute_with_options_async / { > exit_code = 0; output_length = 463; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:15 d #10 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:16 v #11 > Determining projects to restore... > │ 00:00:16 v #12 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:16 v #13 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:16 v #14 > Total time taken: 0 milliseconds > │ 00:00:17 v #15 > Restored > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 228 ms). > │ 00:00:28 v #16 > DirTreeHtml -> > c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\win-x64\DirTr > eeHtml.dll > │ 00:00:29 v #17 > DirTreeHtml -> > C:\home\git\polyglot\apps\dir-tree-html\dist\ > │ 00:00:30 d #18 runtime.execute_with_options_async / { > exit_code = 0; output_length = 461; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ polyglot/apps/dir-tree-html/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/scheduler/build.ps1 } | Invoke-Block > > ── [ 22.82s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib", "--output-path", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/scheduler/Tasks.dib" --output-path > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Tasks (Polyglot) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task_name > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal task_name = string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## manual_scheduling > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union manual_scheduling = > │ > | WithSuggestion > │ > | WithoutSuggestion > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## recurrency_offset > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union recurrency_offset = > │ > | Days : i32 > │ > | Weeks : i32 > │ > | Months : i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## day_of_week > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union day_of_week = > │ > | Sunday > │ > | Monday > │ > | Tuesday > │ > | Wednesday > │ > | Thursday > │ > | Friday > │ > | Saturday > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## month > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union month = > │ > | January > │ > | February > │ > | March > │ > | April > │ > | May > │ > | June > │ > | July > │ > | August > │ > | September > │ > | October > │ > | November > │ > | December > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## day > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal day = i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## year > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal year = i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## fixed_recurrency > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union fixed_recurrency = > │ > | Weekly : day_of_week > │ > | Monthly : day > │ > | Yearly : day * month > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## recurrency > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union recurrency = > │ > | Offset : recurrency_offset > │ > | Fixed : list fixed_recurrency > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## scheduling > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union scheduling = > │ > | Manual : manual_scheduling > │ > | Recurrent : recurrency > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type task = > │ > { > │ > name : task_name > │ > scheduling : scheduling > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## date > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type date = > │ > { > │ > year : year > │ > month : month > │ > day : day > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## status > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union status = > │ > | Postponed : option () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## event > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type event = > │ > { > │ > date : date > │ > status : status > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task_template > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type task_template = > │ > { > │ > task : task > │ > events : list event > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## get_tasks (test) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > inl get_tasks () : list task_template = > │ > [[ > │ > { > │ > task = > │ > { > │ > name = task_name "01" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > { > │ > task = > │ > { > │ > name = task_name "02" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > { > │ > task = > │ > { > │ > name = task_name "03" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > ]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > get_tasks () > │ > |> sm'.format_debug > │ > |> _assert sm'.contains "01" > │ > > │ > ── [ 4.44s - return value ] > ──────────────────────────────────────────────────── > │ > │ .py output (Cuda): > │ > │ __assert / actual: 01 / expected: > UH2_1(v0='01', > │ > v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', > v1=US1_0(v0=US0_0()), > │ > v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), > v2=UH1_0(), v3=UH2_0()))) > │ > │ > │ > │ .rs output: > │ > │ __assert / actual: "01" / expected: > "UH2_1("01", > │ > US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, > UH2_1("03", US1_0(US0_0), > │ > UH1_0, UH2_0)))" > │ > │ > │ > │ .ts output: > │ > │ __assert / actual: 01 / expected: UH2_1 > (01, US1_0 US0_0, > │ > UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 > US0_0, UH1_0, UH2_0))) > │ > │ > │ > │ .py output: > │ > │ __assert / actual: 01 / expected: UH2_1 > ("01", US1_0 US0_0, > │ > UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 > US0_0, UH1_0, > │ > UH2_0))) > │ > │ > │ > │ > │ > > │ > ── [ 4.45s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ __assert / actual: "01" / expected: > "UH2_1 > │ > │ ("01", US1_0 US0_0, UH1_0, > │ > │ UH2_1 ("02", US1_0 US0_0, UH1_0, > UH2_1 ("03", US1_0 US0_0, > │ > UH1_0, UH2_0)))" > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > get_tasks () > │ > |> listm'.try_item 0i32 > │ > |> fun (Some task) => task.task.name > │ > |> _assert_eq (task_name "01") > │ > > │ > ── [ 2.93s - return value ] > ──────────────────────────────────────────────────── > │ > │ .py output (Cuda): > │ > │ __assert_eq / actual: 01 / expected: 01 > │ > │ > │ > │ .rs output: > │ > │ __assert_eq / actual: "01" / expected: > "01" > │ > │ > │ > │ .ts output: > │ > │ __assert_eq / actual: 01 / expected: 01 > │ > │ > │ > │ .py output: > │ > │ __assert_eq / actual: 01 / expected: 01 > │ > │ > │ > │ > │ > > │ > ── [ 2.93s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ __assert_eq / actual: "01" / expected: > "01" > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ////! cuda > │ > ////! typescript > │ > ////! python > │ > ///// print_code > │ > > │ > inl print padding cols = > │ > ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, > cols) > │ > ||> listm.fold fun { last_lines max_acc } lines => > │ > inl { count max } = > │ > (lines, { count = 0i32; max = 0i32 }) > │ > ||> listm.foldBack fun line { count max } => { > │ > count = count + 1 > │ > max = > │ > inl len = line |> sm'.length > │ > if len > max > │ > then len > │ > else max > │ > } > │ > inl { lines } = > │ > (lines, { lines = [[]]; i = 0i32 }) > │ > ||> listm.foldBack fun line { lines i } => { > │ > lines = > │ > inl last_line = > │ > last_lines > │ > |> listm'.try_item (count - i - 1) > │ > |> optionm'.default_with fun () => > │ > " " |> sm'.replicate max_acc > │ > inl line = > │ > if padding = 0 > │ > then line > │ > else > │ > inl padding = " " |> > sm'.replicate padding > │ > $'$"{!line}{!padding}"' > │ > inl line = line |> sm'.pad_right (max + > padding) ' ' > │ > $'$"{!last_line}{!line}"' :: lines > │ > i = i + 1 > │ > } > │ > { > │ > lines > │ > last_lines = lines > │ > max_acc = max_acc + max + padding > │ > } > │ > |> fun x => x.lines > │ > |> listm'.box > │ > |> seq.of_list' > │ > |> sm'.concat "\n" > │ > > │ > inl col () = > │ > [[ "Task" ]] > │ > ++ ( > │ > get_tasks () > │ > |> listm.map fun task => > │ > inl (task_name name) = task.task.name > │ > name > │ > ) > │ > > │ > inl cols () = > │ > [[ > │ > col () > │ > col () > │ > [[ "a"; "b"; "c"; "d"; "e" ]] > │ > ]] > │ > > │ > inl main () = > │ > cols () > │ > |> print 1i32 > │ > |> console.write_line > │ > > │ > ── [ 493.14ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Task Task a > │ > │ 01 01 b > │ > │ 02 02 c > │ > │ 03 03 d > │ > │ e > │ > │ > │ 00:00:19 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 10281 } > │ 00:00:19 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:20 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb to html > │ 00:00:20 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:20 v #7 ! validate(nb) > │ 00:00:21 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:21 v #9 ! return _pygments_highlight( > │ 00:00:21 v #10 ! [NbConvertApp] Writing 309919 bytes to > c:\home\git\polyglot\apps\scheduler\Tasks.dib.html > │ 00:00:21 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 860 } > │ 00:00:21 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 860 } > │ 00:00:21 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:22 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:22 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:22 d #16 spiral.run / dib / { exit_code = 0; > result_length = 11200 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > Tasks.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > Tasks.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/chat/build.ps1 } | Invoke-Block > > ── [ 5.76m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "1"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib" --output-path > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # chat_contract > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > open rust > │ > open rust.rust_operators > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## chat_contract > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### state > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type state = > │ > { > │ > version : u32 > │ > account_set : near.iterable_set near.account_id > │ > alias_set : near.iterable_set sm'.std_string > │ > account_map : near.lookup_map near.account_id > sm'.std_string > │ > alias_map : near.lookup_map sm'.std_string > (mapm.hash_map > │ > near.account_id (u64 * u32)) > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > () > │ > > │ > ── [ 28.77s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000808; total_gas_burnt = > 1209380155211 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000602; > tokens_burnt_usd = +0.000602; > │ > gas_burnt = 901298295871; tokens_burnt = > 90129829587100000000 } > │ > │ 00:00:07 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:14 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.000957; total_gas_burnt = > 1432562717711 } > │ > │ 00:00:14 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:14 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000602; > tokens_burnt_usd = +0.000602; > │ > gas_burnt = 901298295871; tokens_burnt = > 90129829587100000000 } > │ > │ 00:00:14 i #11 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > trace Verbose (fun () => "") id > │ > > │ > ── [ 11.51s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001034; total_gas_burnt = > 1547823517808 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000679; > tokens_burnt_usd = +0.000679; > │ > gas_burnt = 1016559095968; tokens_burnt = > 101655909596800000000 } > │ > │ 00:00:06 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### new > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl new () : state = > │ > { > │ > version = 2 > │ > account_set = "account_set" |> sm'.byte_slice |> > near.new_iterable_set > │ > alias_set = "alias_set" |> sm'.byte_slice |> > near.new_iterable_set > │ > account_map = "account_map" |> sm'.byte_slice |> > near.new_lookup_map > │ > alias_map = "alias_map" |> sm'.byte_slice |> > near.new_lookup_map > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > inl state = new () > │ > trace Verbose (fun () => "chat_contract") fun () => { state > = state |> > │ > sm'.format_debug } > │ > trace Verbose (fun () => "") id > │ > > │ > ── [ 20.43s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 v #1 chat_contract / { > state = (2, IterableSet > │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, > │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, > │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 0, prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, > │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap > { prefix: [97, 108, > │ > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001326; total_gas_burnt = > 1984999776102 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.001120; > tokens_burnt_usd = +0.001120; > │ > gas_burnt = 1676917916762; tokens_burnt = > 167691791676200000000 } > │ > │ 00:00:06 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ 00:00:00 v #1 chat_contract / { > state = (2, IterableSet > │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, > │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, > │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 0, prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, > │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap > { prefix: [97, 108, > │ > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ > │ > │ 00:00:14 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.001475; total_gas_burnt = > 2208182338602 } > │ > │ 00:00:14 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:14 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.001120; > tokens_burnt_usd = +0.001120; > │ > gas_burnt = 1676917916762; tokens_burnt = > 167691791676200000000 } > │ > │ 00:00:14 i #11 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### is_valid_alias > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl is_valid_alias (alias : sm'.std_string) : bool = > │ > inl alias' = alias |> sm'.from_std_string > │ > inl alias_len = alias' |> sm'.length > │ > > │ > alias_len > 0i32 > │ > && alias_len < 64 > │ > && (alias' |> sm'.starts_with "-" |> not) > │ > && (alias' |> sm'.ends_with "-" |> not) > │ > && (alias' |> sm'.as_str |> sm'.chars |> iter.all > (fun c => (c |> > │ > sm'.char_is_alphanumeric) || c = '-')) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq false > │ > > │ > ── [ 11.42s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000971; total_gas_burnt = > 1454140119900 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000616; > tokens_burnt_usd = +0.000616; > │ > gas_burnt = 922875698060; tokens_burnt = > 92287569806000000000 } > │ > │ 00:00:07 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "a-" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq false > │ > > │ > ── [ 10.99s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000973; total_gas_burnt = > 1456129474491 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000618; > tokens_burnt_usd = +0.000618; > │ > gas_burnt = 924865052651; tokens_burnt = > 92486505265100000000 } > │ > │ 00:00:07 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "a-a" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq true > │ > > │ > ── [ 37.52s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = > 1234545028970 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000619; > tokens_burnt_usd = +0.000619; > │ > gas_burnt = 926463169630; tokens_burnt = > 92646316963000000000 } > │ > │ 00:00:07 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:14 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = > 1234545028970 } > │ > │ 00:00:14 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:14 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000619; > tokens_burnt_usd = +0.000619; > │ > gas_burnt = 926463169630; tokens_burnt = > 92646316963000000000 } > │ > │ 00:00:14 w #11 spiral_wasm.run / > Error error / { retry > │ > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:21 i #14 > near_workspaces.print_usd / { retry = 3; > │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = > 12...error = "{ > │ > receipt_outcomes_len = 1; retry = 3; receipt_failures = [] > }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:28 i #20 > near_workspaces.print_usd / { retry = 4; > │ > total_gas_burnt_usd = +0.000825; total_gas_burnt = > 1234545028970 } > │ > │ 00:00:28 i #21 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:28 i #22 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000619; > tokens_burnt_usd = +0.000619; > │ > gas_burnt = 926463169630; tokens_burnt = > 92646316963000000000 } > │ > │ 00:00:28 w #23 spiral_wasm.run / > Error error / { retry > │ > = 4; error = "{ receipt_outcomes_len = 1; retry = 4; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:33 i #26 > near_workspaces.print_usd / { retry = 5; > │ > total_gas_burnt_usd = +0.000974; total_gas_burnt = > 1457727591470 } > │ > │ 00:00:33 i #27 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:33 i #28 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000619; > tokens_burnt_usd = +0.000619; > │ > gas_burnt = 926463169630; tokens_burnt = > 92646316963000000000 } > │ > │ 00:00:33 i #29 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### generate_cid > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl generate_cid (content : am'.vec u8) : sm'.std_string = > │ > !\($'" fn encode_u64(value: u64) -> Vec<u8> { //"') : > () > │ > !\($'" let mut buffer = > unsigned_varint::encode::u64_buffer(); //"') : () > │ > !\($'" unsigned_varint::encode::u64(value, &mut > buffer).to_vec() //"') : > │ > () > │ > !\($'" } //"') : () > │ > > │ > !\($'" fn sha256_hash(content: &[[u8]]) -> Vec<u8> { > //"') : () > │ > !\($'" let mut hasher: sha2::Sha256 = > sha2::Digest::new(); //"') : () > │ > !\($'" sha2::Digest::update(&mut hasher, content); > //"') : () > │ > !\($'" sha2::Digest::finalize(hasher).to_vec() //"') > : () > │ > !\($'" } //"') : () > │ > > │ > !\($'" let version: u8 = 1; //"') : () > │ > !\($'" let codec_raw: u64 = 0x55; //"') : () > │ > > │ > !\($'" let codec_bytes = encode_u64(codec_raw); //"') > : () > │ > !\($'" let hash_result = sha256_hash(&!content); //"') > : () > │ > !\($'" let multihash = std::iter::once(0x12) //"') : > () > │ > !\($'" .chain(std::iter::once(32)) //"') : () > │ > !\($'" .chain(hash_result.into_iter()) //"') : () > │ > !\($'" .collect(); //"') : () > │ > !\($'" let cid_bytes = [[vec\![[version]], > codec_bytes, > │ > multihash]].concat(); //"') : () > │ > !\($'" let result = > multibase::encode(multibase::Base::Base32Lower, > │ > &cid_bytes); //"') : () > │ > !\($'"result"') > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c -d multibase sha2 unsigned-varint > │ > > │ > ;[[]] > │ > |> am'.to_vec > │ > |> generate_cid > │ > |> sm'.from_std_string > │ > |> _assert_eq > "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku" > │ > > │ > ── [ 12.43s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001025; total_gas_burnt = > 1535058297165 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000671; > tokens_burnt_usd = +0.000671; > │ > gas_burnt = 1003793875325; tokens_burnt = > 100379387532500000000 } > │ > │ 00:00:06 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### claim_alias > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl claim_alias (state : rust.ref (rust.mut' state)) (alias > : sm'.std_string) : > │ > () = > │ > inl account_set : rust.ref (rust.mut' > (near.iterable_set near.account_id)) = > │ > !\($'$"&mut !state.1"') > │ > > │ > inl alias_set : rust.ref (rust.mut' (near.iterable_set > sm'.std_string)) = > │ > !\($'$"&mut !state.2"') > │ > > │ > inl account_map : rust.ref (rust.mut' (near.lookup_map > near.account_id > │ > sm'.std_string)) = > │ > !\($'$"&mut !state.3"') > │ > > │ > inl alias_map : rust.ref (rust.mut' (near.lookup_map > sm'.std_string > │ > (mapm.hash_map near.account_id (u64 * u32)))) = > │ > !\($'$"&mut !state.4"') > │ > > │ > inl signer_account_id = near.signer_account_id () > │ > inl predecessor_account_id = > near.predecessor_account_id () > │ > inl block_timestamp = near.block_timestamp () > │ > > │ > trace Debug > │ > fun () => "chat_contract.claim_alias" > │ > fun () => { > │ > alias > │ > block_timestamp > │ > signer_account_id = signer_account_id |> > sm'.to_string' > │ > predecessor_account_id = predecessor_account_id > |> sm'.to_string' > │ > } > │ > > │ > if alias |> is_valid_alias |> not > │ > then near.panic_str "chat_contract.claim_alias / > invalid alias" . true > │ > else false > │ > |> ignore > │ > > │ > inl account_alias = > │ > account_map > │ > |> near.lookup_get signer_account_id > │ > |> optionm'.cloned > │ > > │ > match account_alias |> optionm'.unbox with > │ > | Some account_alias when account_alias =. alias => > │ > trace Warning > │ > fun () => "chat_contract.claim_alias / alias > already claimed" > │ > fun () => { account_alias = account_alias |> > sm'.format_debug } > │ > | account_alias' => > │ > trace Debug > │ > fun () => "chat_contract.claim_alias" > │ > fun () => { account_alias = account_alias |> > sm'.format_debug } > │ > > │ > match account_alias' with > │ > | Some account_alias => > │ > !\($'" !alias_map //"') : () > │ > !\($'" .get_mut(&!account_alias) //"') : > () > │ > !\($'" .unwrap() //"') : () > │ > !\\(signer_account_id, $'" .remove(&$0); > //"') : () > │ > | None => () > │ > > │ > !\\((signer_account_id, alias), $'" > !account_map.insert($0.clone(), > │ > $1.clone()); //"') : () > │ > > │ > account_set |> near.iterable_set_insert > signer_account_id |> ignore > │ > alias_set |> near.iterable_set_insert alias |> > ignore > │ > > │ > !\\(alias, $'" let new_alias_account_map = match > !alias_map.get(&$0) { > │ > //"') : () > │ > !\($'" None => { //"') : () > │ > !\($'" let mut new_map = > std::collections::HashMap::new(); //"') : > │ > () > │ > !\\((signer_account_id, block_timestamp), $'" > new_map.insert($0, > │ > ($1, 0u32)); //"') : () > │ > !\($'" new_map //"') : () > │ > !\($'" } //"') : () > │ > !\($'" Some(accounts) => { //"') : () > │ > !\($'" let mut accounts_vec = > accounts.iter().collect::<Vec<_>>(); > │ > //"') : () > │ > !\($'" accounts_vec.sort_unstable_by_key(|(_, > (_, index))| index); > │ > //"') : () > │ > !\($'" let mut new_map = accounts_vec //"') : > () > │ > !\($'" .iter() //"') : () > │ > !\($'" .enumerate() //"') : () > │ > !\($'" .map(|(i, (signer_account_id, > (timestamp, _)))| { //"') : > │ > () > │ > !\($'" ((*signer_account_id).clone(), > (*timestamp, i as u32)) > │ > //"') : () > │ > !\($'" }) //"') : () > │ > !\($'" > .collect::<std::collections::HashMap<_, _>>(); //"') : () > │ > !\\(signer_account_id, $'" new_map.insert($0, > (!block_timestamp, > │ > accounts_vec.len() as u32)); //"') : () > │ > !\($'" new_map //"') : () > │ > !\($'" } //"') : () > │ > !\($'" }; //"') : () > │ > > │ > !\\(alias, $'" !alias_map.insert($0, > new_alias_account_map); //"') : () > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > inl state = new () > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > inl state : rust.ref (rust.mut' state) = > │ > !\\( > │ > version, > │ > $'$"&mut ($0, !account_set, !alias_set, > !account_map, !alias_map)"' > │ > ) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > trace Verbose > │ > fun () => "chat_contract" > │ > fun () => { state = state |> sm'.format_debug } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > ── [ 15.84s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211162110138940; > signer_account_id = > │ > "dev-20250305214600-29985083003639"; predecessor_account_id > = > │ > "dev-20250305214600-29985083003639" } > │ > │ 00:00:00 d #2 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 v #3 chat_contract / { > state = (2, IterableSet > │ > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, > │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, > │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 1, prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, > │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap > { prefix: [97, 108, > │ > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ > │ > │ 00:00:08 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.002669; total_gas_burnt = > 3995708853120 } > │ > │ 00:00:08 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:08 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.002314; > tokens_burnt_usd = +0.002314; > │ > gas_burnt = 3464444431280; tokens_burnt = > 346444443128000000000 } > │ > │ 00:00:08 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid > alias\\\"\" > │ > > │ > "" > │ > |> sm'.to_std_string > │ > |> claim_alias ( > │ > inl state = new () > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > !\\(version, $'$"&mut ($0, !account_set, !alias_set, > !account_map, > │ > !alias_map)"') > │ > ) > │ > trace Debug (fun () => "") id > │ > > │ > ── [ 15.81s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:08 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001145; total_gas_burnt = > 1714031566758 } > │ > │ 00:00:08 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:08 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = false; gas_burnt_usd = +0.000939; > tokens_burnt_usd = +0.000939; > │ > gas_burnt = 1405949707418; tokens_burnt = > 140594970741800000000 } > │ > │ 00:00:08 c #5 spiral_wasm.run / Ok > (Some error) / { > │ > retry = 1; error = { receipt_outcomes_len = 1; retry = 1; > receipt_failures = [ > │ > │ ExecutionOutcome { > │ > │ transaction_hash: > │ > 6weiAaRyZydqN3xUbWZppN1o1P1Tii6oqT7ykeQM9Rqp, > │ > │ block_hash: > │ > 2sYP3wPmM4f2JdgbYTNmJz423KxdbvEAZHJf5d7bm87N, > │ > │ logs: [], > │ > │ receipt_ids: [ > │ > │ > 4q7g4VU7y1K4q45wic5THa26v7gsFMtFrbM6C67VPaGV, > │ > │ ], > │ > │ gas_burnt: NearGas { > │ > │ inner: 1405949707418, > │ > │ }, > │ > │ tokens_burnt: NearToken { > │ > │ inner: > 140594970741800000000, > │ > │ }, > │ > │ executor_id: AccountId( > │ > │ > "dev-20250305214616-54876146593286", > │ > │ ), > │ > │ status: > Failure(ActionError(ActionError { index: > │ > Some(0), kind: FunctionCallError(ExecutionError("Smart > contract panicked: > │ > chat_contract.claim_alias / invalid alias")) })), > │ > │ }, > │ > │ ] } } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -cd borsh > │ > > │ > inl state' = new () > │ > inl state = state' > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > > │ > inl state = > │ > !\\( > │ > (version, account_set, alias_set), > │ > $'$"&mut ($0, $1, $2, !account_map, !alias_map)"' > │ > ) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > inl account_set' : rust.ref (near.iterable_set > near.account_id) = > │ > !\($'$"&!state.1"') > │ > > │ > inl alias_set' : rust.ref (near.iterable_set > sm'.std_string) = > │ > !\($'$"&!state.2"') > │ > > │ > inl account_set' = > │ > account_set' > │ > |> iter.iter_ref'' > │ > |> iter.cloned > │ > |> iter_collect > │ > > │ > inl alias_set' = > │ > alias_set' > │ > |> iter.iter_ref'' > │ > |> iter.cloned > │ > |> iter_collect > │ > |> am'.vec_map sm'.from_std_string > │ > > │ > trace Verbose > │ > fun () => "chat_contract" > │ > fun () => { > │ > account_set' = account_set' |> sm'.format_debug > │ > alias_set' = alias_set' |> sm'.format_debug > │ > state = state |> sm'.format_debug > │ > } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > account_set' > │ > |> am'.vec_len > │ > |> convert > │ > |> _assert_eq 1u32 > │ > > │ > alias_set' > │ > |> am'.from_vec_base > │ > |> _assert_eq' ;[[ "alias1" ]] > │ > > │ > ── [ 28.59s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211194089381132; > signer_account_id = > │ > "dev-20250305214632-61898508379944"; predecessor_account_id > = > │ > "dev-20250305214632-61898508379944" } > │ > │ 00:00:00 d #2 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #3 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211194089381132; > signer_account_id = > │ > "dev-20250305214632-61898508379944"; predecessor_account_id > = > │ > "dev-20250305214632-61898508379944" } > │ > │ 00:00:00 d #4 > chat_contract.claim_alias / { > │ > account_alias = Some("alias1") } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211194089381132; > signer_account_id = > │ > "dev-20250305214632-61898508379944"; predecessor_account_id > = > │ > "dev-20250305214632-61898508379944" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = Some("alias1") } > │ > │ 00:00:00 v #7 chat_contract / { > account_set' = > │ > [AccountId("dev-20250305214632-61898508379944")]; > alias_set' = ["alias1"]; state > │ > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, > 99, 99, 111, 117, > │ > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { > prefix: [97, 99, 99, > │ > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, > IterableSet { elements: Vector > │ > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 118] }, index: > │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 109] } }, > │ > LookupMap { prefix: [97, 99, 99, ...8109726192186" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = Some("alias1") } > │ > │ 00:00:00 v #7 chat_contract / { > account_set' = > │ > [AccountId("dev-20250305214645-38109726192186")]; > alias_set' = ["alias1"]; state > │ > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, > 99, 99, 111, 117, > │ > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { > prefix: [97, 99, 99, > │ > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, > IterableSet { elements: Vector > │ > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 118] }, index: > │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 109] } }, > │ > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, > 109, 97, 112] }, > │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, > 112] }) } > │ > │ > │ > │ 00:00:20 i #14 > near_workspaces.print_usd / { retry = 3; > │ > total_gas_burnt_usd = +0.004483; total_gas_burnt = > 6710454647302 } > │ > │ 00:00:20 i #15 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:20 i #16 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.004128; > tokens_burnt_usd = +0.004128; > │ > gas_burnt = 6179190225462; tokens_burnt = > 617919022546200000000 } > │ > │ 00:00:20 i #17 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_account_info > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_account_info > │ > (state : rust.ref state) > │ > (account_id : near.account_id) > │ > : optionm'.option' (sm'.std_string * (u64 * u32)) > │ > = > │ > inl account_map : rust.ref (near.lookup_map > near.account_id sm'.std_string) > │ > = > │ > !\($'$"&!state.3"') > │ > > │ > inl alias_map : rust.ref (near.lookup_map > sm'.std_string (mapm.hash_map > │ > near.account_id (u64 * u32))) = > │ > !\($'$"&!state.4"') > │ > > │ > (!\\(account_id, $'"true; let result = > │ > !account_map.get(&$0).and_then(|alias| { //"') : bool) |> > ignore > │ > (!\($'"true; !alias_map.get(alias).map(|accounts| { > //"') : bool) |> > │ > ignore > │ > (!\($'"true; let result = (alias.clone(), > │ > *accounts.get(&!account_id).unwrap()); //"') : bool) |> > ignore > │ > (!\($'"true; (result.0, result.1.0, result.1.1) > }) }); //"') : bool) > │ > |> ignore > │ > > │ > inl result = !\($'"result"') > │ > > │ > trace Debug > │ > fun () => "chat_contract.get_account_info" > │ > fun () => { account_id result } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > result > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -cd borsh > │ > > │ > inl state' = new () > │ > inl state = state' > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > > │ > inl state_ref_mut = > │ > !\\( > │ > version, > │ > $'$"&mut ($0, !account_set, !alias_set, > !account_map, !alias_map)"' > │ > ) > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.predecessor_account_id () > │ > |> get_account_info state_ref > │ > |> _assert_eq' (optionm'.none' ()) > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.signer_account_id () > │ > |> get_account_info state_ref > │ > |> _assert_eq' (optionm'.none' ()) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state_ref_mut > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.predecessor_account_id () > │ > |> get_account_info state_ref > │ > |> optionm'.get' > │ > |> fun alias, (timestamp, i) => > │ > alias > │ > |> sm'.from_std_string > │ > |> _assert_eq "alias1" > │ > > │ > timestamp > │ > |> _assert_gt 0 > │ > > │ > i > │ > |> _assert_eq 0 > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.signer_account_id () > │ > |> get_account_info state_ref > │ > |> optionm'.get' > │ > |> fun alias, (timestamp, i) => > │ > alias > │ > |> sm'.from_std_string > │ > |> _assert_eq "alias1" > │ > > │ > timestamp > │ > |> _assert_gt 0 > │ > > │ > i > │ > |> _assert_eq 0 > │ > > │ > ── [ 45.26s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214700-78791184073017", > │ > │ ); result = None } > │ > │ 00:00:00 d #3 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214700-78791184073017", > │ > │ ); result = None } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211221363142406; > signer_account_id = > │ > "dev-20250305214700-78791184073017"; predecessor_account_id > = > │ > "dev-20250305214700-78791184073017" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #7 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214700-78791184073017", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1741211221363142406, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ 00:00:00 d #9 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214700-78791184073017", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1741211221363142406, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.003129; total_gas_burnt = > 4683702347218 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.002923; > tokens_burnt_usd = +0.0...051", > │ > │ ); result = None } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1741211251954552551; > signer_account_id = > │ > "dev-20250305214730-26619892460051"; predecessor_account_id > = > │ > "dev-20250305214730-26619892460051" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #7 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214730-26619892460051", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1741211251954552551, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ 00:00:00 d #9 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250305214730-26619892460051", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1741211251954552551, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ > │ > │ 00:00:37 i #32 > near_workspaces.print_usd / { retry = 6; > │ > total_gas_burnt_usd = +0.003278; total_gas_burnt = > 4906884909718 } > │ > │ 00:00:37 i #33 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:37 i #34 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.002923; > tokens_burnt_usd = +0.002923; > │ > gas_burnt = 4375620487878; tokens_burnt = > 437562048787800000000 } > │ > │ 00:00:37 i #35 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > ///! _ > │ > > │ > inl main () = > │ > !\($'"} //"') : () > │ > > │ > !\($'"#[[near_sdk::near_bindgen]] //"') : () > │ > > │ > !\($'"#[[derive( //"') : () > │ > !\($'" near_sdk::PanicOnDefault, //"') : () > │ > !\($'" borsh::BorshDeserialize, //"') : () > │ > !\($'" borsh::BorshSerialize, //"') : () > │ > !\($'")]] //"') : () > │ > > │ > !\($'"pub struct State ( //"') : () > │ > > │ > !\($'"/*"') : () > │ > (null () : rust.type_emit state) |> ignore > │ > !\($'"*/ )"') : () > │ > > │ > inl new_ () = > │ > !\($'"#[[init]] //"') : () > │ > !\($'"pub fn new() -> Self { // 1"') : () > │ > > │ > (!\($'"true; /*"') : bool) |> ignore > │ > > │ > (null () : rust.type_emit ()) |> ignore > │ > > │ > (!\($'"true; */"') : bool) |> ignore > │ > > │ > inl result = new () > │ > > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // > 2' : () > │ > > │ > !\($'"} // 2."') : () > │ > > │ > !\($'"} // 1."') : () > │ > > │ > 2 > │ > > │ > inl is_valid_alias () = > │ > !\($'"fn is_valid_alias(alias: String) -> bool { > //"') : () > │ > inl alias = !\($'$"alias"') > │ > inl result = alias |> is_valid_alias > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl generate_cid () = > │ > !\($'"pub fn generate_cid( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" content: Vec<u8>, //"') : () > │ > !\($'") -> String { //"') : () > │ > inl content = !\($'$"content"') > │ > inl result = generate_cid content > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > │ > !\($'"} //"') : () > │ > 2 > │ > > │ > inl generate_cid_borsh () = > │ > !\($'"#[[result_serializer(borsh)]] //"') : () > │ > !\($'"pub fn generate_cid_borsh( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" #[[serializer(borsh)]] content: Vec<u8>, > //"') : () > │ > !\($'") -> String { //"') : () > │ > !\($'" self.generate_cid(content) //"') : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl claim_alias () = > │ > !\($'"pub fn claim_alias( //"') : () > │ > !\($'" &mut self, //"') : () > │ > !\($'" alias: String, //"') : () > │ > !\($'") { //"') : () > │ > > │ > inl state = !\($'$"&mut self.0"') > │ > inl alias = !\($'$"alias"') > │ > > │ > inl result = claim_alias state alias > │ > trace Debug (fun () => "") (join id) > │ > > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > 3 > │ > > │ > inl get_account_info () = > │ > !\($'"pub fn get_account_info( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" account_id: near_sdk::AccountId, //"') : () > │ > !\($'") -> Option<(String, u64, u32)> { //"') : () > │ > > │ > inl state = !\($'$"&self.0"') > │ > inl account_id : near.account_id = > !\($'$"account_id"') > │ > > │ > inl result = account_id |> get_account_info state > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : > () > │ > > │ > !\($'"} // 1"') : () > │ > > │ > 1 > │ > > │ > inl get_alias_map () = > │ > !\($'"pub fn get_alias_map( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" alias: String, //"') : () > │ > !\($'") -> > Option<std::collections::HashMap<near_sdk::AccountId, (u64, > │ > u32)>> { //"') : () > │ > > │ > inl alias_map : rust.ref (near.lookup_map > sm'.std_string (mapm.hash_map > │ > near.account_id (u64 * u32))) = > │ > !\($'$"&self.0.4"') > │ > > │ > inl alias : sm'.std_string = !\($'$"alias"') > │ > > │ > trace Debug > │ > fun () => "chat_contract.get_alias_map" > │ > fun () => { alias } > │ > > │ > trace Debug (fun () => "") (join id) > │ > > │ > !\\(alias, $'" !alias_map.get(&$0).cloned() //"') > : () > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > 2 > │ > > │ > inl get_alias_map_borsh () = > │ > !\($'"#[[result_serializer(borsh)]] //"') : () > │ > !\($'"pub fn get_alias_map_borsh( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" #[[serializer(borsh)]] alias: String, //"') > : () > │ > !\($'") -> > Option<std::collections::HashMap<near_sdk::AccountId, (u64, > │ > u32)>> { //"') : () > │ > !\($'" self.get_alias_map(alias) //"') : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl fns = > │ > [[ > │ > new_ > │ > is_valid_alias > │ > generate_cid > │ > generate_cid_borsh > │ > claim_alias > │ > get_account_info > │ > get_alias_map > │ > get_alias_map_borsh > │ > ]] > │ > > │ > inl rec loop acc fns i = > │ > match fns with > │ > | [[]] => acc > │ > | x :: xs => > │ > !\($'"#[[near_sdk::near_bindgen]] //"') : () > │ > !\($'"impl State { //"') : () > │ > inl n = x () > │ > !\($'"} /* c"') : () > │ > inl rec loop' i' = > │ > if i' <> 1 // <= n > │ > then (!\($'"true; */ // ???? / i: !i / i\': > !i' / acc: !acc / n: > │ > !n"') : bool) |> ignore > │ > else > │ > (!\($'"true; // ??? / i: !i / i\': !i' > / acc: !acc / n: > │ > !n"') : bool) |> ignore > │ > loop' (i' + 1) > │ > loop' 1u8 > │ > loop (acc + n) xs (i + 1) > │ > inl n = loop 0u8 fns 1u8 > │ > > │ > > │ > // !\($'"/* a"') : () > │ > > │ > // !\($'"} // b"') : () > │ > > │ > !\($'"fn _main() //"') : () > │ > !\($'"{ { //"') : () > │ > > │ > inl rec loop' i' = > │ > if i' <= n > │ > then > │ > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') > : bool) |> ignore > │ > loop' (i' + 1) > │ > else > │ > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') > : bool) |> ignore > │ > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') > : bool) |> ignore > │ > loop' 1u8 > │ > > │ > inl main () = > │ > $'!main |> ignore' : () > │ 00:04:08 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 44471 } > │ 00:04:08 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", > "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:04:09 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html > │ 00:04:09 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:04:09 v #7 ! validate(nb) > │ 00:04:09 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:04:09 v #9 ! return _pygments_highlight( > │ 00:04:10 v #10 ! [NbConvertApp] Writing 401713 bytes to > c:\home\git\polyglot\apps\chat\contract\chat_contract.dib.html > │ 00:04:10 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 884 } > │ 00:04:10 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 884 } > │ 00:04:10 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content > $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:04:10 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:04:10 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:04:10 d #16 spiral.run / dib / { exit_code = 0; > result_length = 45414 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > chat_contract.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > chat_contract.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > chat_contract / hash: / code.Length: 144257 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Restored > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 220 > ms). > │ 00:00:09 v #7 > > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3285,15): > warning FS0025: Incomplete pattern matches on this expression. For example, the > value 'US6_0 (_)' may indicate a case not covered by the pattern(s). > [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] > │ 00:00:12 v #8 > chat_contract -> > c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\linux-x64\c > hat_contract.dll > │ 00:00:14 v #9 > chat_contract -> > C:\home\git\polyglot\apps\chat\contract\dist\ > │ 00:00:14 d #10 runtime.execute_with_options_async / { > exit_code = 0; output_length = 774; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:14 d #11 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:15 v #12 > Determining projects to restore... > │ 00:00:15 v #13 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:15 v #14 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:15 v #15 > Total time taken: 0 milliseconds > │ 00:00:16 v #16 > Restored > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 217 > ms). > │ 00:00:23 v #17 > > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3285,15): > warning FS0025: Incomplete pattern matches on this expression. For example, the > value 'US6_0 (_)' may indicate a case not covered by the pattern(s). > [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] > │ 00:00:27 v #18 > chat_contract -> > c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\win-x64\cha > t_contract.dll > │ 00:00:29 v #19 > chat_contract -> > C:\home\git\polyglot\apps\chat\contract\dist\ > │ 00:00:29 d #20 runtime.execute_with_options_async / { > exit_code = 0; output_length = 772; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\chat_contract > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\chat_contract / ProjectName: chat_contract / > Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @Neftedollar > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\chat_contract\chat_contract.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 152ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 8329ms > │ > │ .\target\Builder\chat_contract\chat_contract.fs(3285,15): > (3285,19) warning FSHARP: Incomplete pattern matches on this expression. For > example, the value 'US6_0 (_)' may indicate a case not covered by the > pattern(s). (code 25) > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\target\Builder\chat_contract\chat_contract.fs(3491,6): > (3491,12) warning FABLE: For Rust, support for F# static and module do bindings > is disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling chat_contract v0.0.1 > (C:\home\git\polyglot\apps\chat\contract) > │ Finished `release` profile [optimized] target(s) in > 12.79s > │ polyglot/apps/chat/contract/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\chat_contract / $projectName: chat_contract > / $env:CI:'' > │ Finished `release` profile [optimized] target(s) in > 14.09s > │ Running > `/mnt/c/home/git/polyglot/workspace/target/release/chat_contract_tests` > │ > │ > │ new: ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 1641878353157, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > DwM148cd9X4VVo5ML7oBWuVw49ppgnxaD7gsXtaZkDoa, > │ block_hash: > CgUXrQZ4SSPRaC3g4zNKkPz9PiwzXijJRvucHVhmQQ36, > │ logs: [], > │ receipt_ids: [ > │ 6tFVN2ntvhmdiwaC5qKwmpyAdjetPRchGcQArss2f5Dx, > │ ], > │ gas_burnt: NearGas { > │ inner: 308066207802, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30806620780200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: > SuccessReceiptId(6tFVN2ntvhmdiwaC5qKwmpyAdjetPRchGcQArss2f5Dx), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 6tFVN2ntvhmdiwaC5qKwmpyAdjetPRchGcQArss2f5Dx, > │ block_hash: > CgUXrQZ4SSPRaC3g4zNKkPz9PiwzXijJRvucHVhmQQ36, > │ logs: [], > │ receipt_ids: [ > │ 72apFPjTy4n1M4icvy6RerL1sefR7QUxnEQdAApnW87P, > │ ], > │ gas_burnt: NearGas { > │ inner: 1333812145355, > │ }, > │ tokens_burnt: NearToken { > │ inner: 133381214535500000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.001096774739908876 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205788226811736 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.0008909865130971399 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ claim_alias(contract, ''): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 2141462283510, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 32omwdVjwZGzbYMMcdyGQELyre3WQ3qucd7GPxkkB13M, > │ block_hash: > FeUfj23sVQaTJbMnYtkR8zhJp8x5ddzjnwqHWMftW8wa, > │ logs: [], > │ receipt_ids: [ > │ B2cF8TfKDFSJSBjPHWXsQrjRC8wSeJFfJDsK7AL9Lrz1, > │ ], > │ gas_burnt: NearGas { > │ inner: 308110926482, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30811092648200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: > SuccessReceiptId(B2cF8TfKDFSJSBjPHWXsQrjRC8wSeJFfJDsK7AL9Lrz1), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > B2cF8TfKDFSJSBjPHWXsQrjRC8wSeJFfJDsK7AL9Lrz1, > │ block_hash: > FeUfj23sVQaTJbMnYtkR8zhJp8x5ddzjnwqHWMftW8wa, > │ logs: [], > │ receipt_ids: [ > │ 3zye8tKCCzNURxbNkEPDaPxmM6va2GsJ2EqntMda87sB, > │ ], > │ gas_burnt: NearGas { > │ inner: 1610168794528, > │ }, > │ tokens_burnt: NearToken { > │ inner: 161016879452800000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: Failure(ActionError(ActionError { index: > Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: > chat_contract.claim_alias / invalid alias")) })), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 3zye8tKCCzNURxbNkEPDaPxmM6va2GsJ2EqntMda87sB, > │ block_hash: > GVBc4xk35DiqrwjUDMdD7RA4qkrzvJhNAq83tosJ4NX6, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: Failure(ActionError(ActionError { index: Some(0), > kind: FunctionCallError(ExecutionError("Smart contract panicked: > chat_contract.claim_alias / invalid alias")) })), > │ } > │ total_gas_burnt_usd: 0.0014304968053846798 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205818098889976 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: false): > │ outcome_gas_burnt_usd: 0.0010755927547447038 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ dev_create_account(account1): Account { > │ id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ } > │ > │ > │ generate_cid_borsh(account1): ViewResultDetails { result: > [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, > 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, > 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, > 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] } > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3517099479846, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > HzZWnrKF6oKrQTaifxpo4tJ9XVxECDp3mvp9kPpKnF48, > │ block_hash: > 6LQYxbCy2xqAPHZkNZFbmuEUkdrCUdEfh2YJvcvVKdNL, > │ logs: [], > │ receipt_ids: [ > │ BnXCvhP7jPA7WR7iqi36GGmM4jAomT3sgGzqvGBrG6Gy, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: > SuccessReceiptId(BnXCvhP7jPA7WR7iqi36GGmM4jAomT3sgGzqvGBrG6Gy), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > BnXCvhP7jPA7WR7iqi36GGmM4jAomT3sgGzqvGBrG6Gy, > │ block_hash: > GqBb4oHPsS6NkyHkqj3DNNdLzpupanpCFTkj6eTiGrru, > │ logs: [ > │ "21:49:03 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1741211343651110269; signer_account_id = \"dev-20250305214902-88219061795944\"; > predecessor_account_id = \"dev-20250305214902-88219061795944\" }\n21:49:03 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", > │ ], > │ receipt_ids: [ > │ 3xFN72FYEGB8vmYKuyu4RnY5imMzQ8QuerMTTud61X8k, > │ ], > │ gas_burnt: NearGas { > │ inner: 2985792575260, > │ }, > │ tokens_burnt: NearToken { > │ inner: 298579257526000000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 3xFN72FYEGB8vmYKuyu4RnY5imMzQ8QuerMTTud61X8k, > │ block_hash: > GDuz4MscTE8mRdJTb4e3iqNFc3M5yNDQR6Wt3Y8Z2bfk, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002349422452537128 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00199450944027368 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3649344532176, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > AXfYnVPiPFqeaR2adim7SvUp4mTH8TxgN1j9VTz1YZbK, > │ block_hash: > 3cXcKrPiKySctK25EzkzoNopJmULoqPrpDa3huBTjstP, > │ logs: [], > │ receipt_ids: [ > │ 6iixsmUBYYtaYN9Lfy1jtWym13QazXrDkFzo5dQfhhTK, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: > SuccessReceiptId(6iixsmUBYYtaYN9Lfy1jtWym13QazXrDkFzo5dQfhhTK), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 6iixsmUBYYtaYN9Lfy1jtWym13QazXrDkFzo5dQfhhTK, > │ block_hash: > 63vuQ7W2yd2jE6nPmTLgTpNRPzxrERUwGNTCXHfxUDv, > │ logs: [ > │ "21:49:04 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1741211344662493939; signer_account_id = \"dev-20250305214902-88219061795944\"; > predecessor_account_id = \"dev-20250305214902-88219061795944\" }\n21:49:04 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias1\") }", > │ ], > │ receipt_ids: [ > │ EabuQ2phrqYya86qddWm272Ad2uUfMwuHBzZw3jwh7u6, > │ ], > │ gas_burnt: NearGas { > │ inner: 3118037627590, > │ }, > │ tokens_burnt: NearToken { > │ inner: 311803762759000000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > EabuQ2phrqYya86qddWm272Ad2uUfMwuHBzZw3jwh7u6, > │ block_hash: > DhstRz2drB5uKVy9cc5FskSHYLuj4WsUscbaAWm2RJTm, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.0024377621474935677 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00208284913523012 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias1", > │ 1741211344662493939, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250305214902-88219061795944", > │ ): ( > │ 1741211344662493939, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ dev_create_account(account2): Account { > │ id: AccountId( > │ "dev-20250305214905-82658665942237", > │ ), > │ } > │ > │ > │ claim_alias(alias2): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3749082950958, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 3PoENTokwvxMW5b9QpfMRCAQ2k5gDYxnRa9dMgpKp231, > │ block_hash: > 7uR2xQBpzoNkYmF3vFc8Up6sQJBLKrWASFpB8p5TmaGQ, > │ logs: [], > │ receipt_ids: [ > │ FcRQEJWyUwfa7WkKTLRxxsScr4Zy7tmruiPfwghtJ3pm, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214905-82658665942237", > │ ), > │ status: > SuccessReceiptId(FcRQEJWyUwfa7WkKTLRxxsScr4Zy7tmruiPfwghtJ3pm), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > FcRQEJWyUwfa7WkKTLRxxsScr4Zy7tmruiPfwghtJ3pm, > │ block_hash: > Ay9BGDbbdpAkn2qBWM8GZWeJZx4tywemM9moAdV7wRKR, > │ logs: [ > │ "21:49:06 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = > 1741211346285848012; signer_account_id = \"dev-20250305214905-82658665942237\"; > predecessor_account_id = \"dev-20250305214905-82658665942237\" }\n21:49:06 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", > │ ], > │ receipt_ids: [ > │ CFuNZGRCy3tnNr4vqHNyAR7PDVj979E7MGwC8su4tFrr, > │ ], > │ gas_burnt: NearGas { > │ inner: 3217776046372, > │ }, > │ tokens_burnt: NearToken { > │ inner: 321777604637200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > CFuNZGRCy3tnNr4vqHNyAR7PDVj979E7MGwC8su4tFrr, > │ block_hash: > J76MmVAscZr2sez7NSRFq7wEP8nvirZXLD3PKhb2zds7, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214905-82658665942237", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002504387411239944 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.0021494743989764957 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account2): Some( > │ ( > │ "alias2", > │ 1741211346285848012, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map_borsh(alias2): Some( > │ { > │ AccountId( > │ "dev-20250305214905-82658665942237", > │ ): ( > │ 1741211346285848012, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ claim_alias(account2, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3939084897297, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > ifE8T55JJU69sm4ySSH3bZy7LRK3QdWhjTWEqizZSdG, > │ block_hash: > 8nJnWYLCqgkRY8fANSf2iCgzwF5LKj4GbxSiQHdey7dT, > │ logs: [], > │ receipt_ids: [ > │ F8cMQZXE93e3edfVpJysN99xsFxpwegCzTXHuSqcLnrs, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214905-82658665942237", > │ ), > │ status: > SuccessReceiptId(F8cMQZXE93e3edfVpJysN99xsFxpwegCzTXHuSqcLnrs), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > F8cMQZXE93e3edfVpJysN99xsFxpwegCzTXHuSqcLnrs, > │ block_hash: > 3KSiWauejEqBeaCKDcPeUzrCP2ka73kUABU5SZzLtWq7, > │ logs: [ > │ "21:49:07 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1741211347300874382; signer_account_id = \"dev-20250305214905-82658665942237\"; > predecessor_account_id = \"dev-20250305214905-82658665942237\" }\n21:49:07 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias2\") }", > │ ], > │ receipt_ids: [ > │ FhFDiXxYMffc3hDW21sx27rC45KsQFR182DtNpyQvjQL, > │ ], > │ gas_burnt: NearGas { > │ inner: 3407777992711, > │ }, > │ tokens_burnt: NearToken { > │ inner: 340777799271100000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > FhFDiXxYMffc3hDW21sx27rC45KsQFR182DtNpyQvjQL, > │ block_hash: > 2uNT1XRx9B61vyWnWSY64cwhs9U1xHfjb2P6UZzHCucz, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214905-82658665942237", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002631308711394396 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.002276395699130948 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account2): Some( > │ ( > │ "alias1", > │ 1741211347300874382, > │ 1, > │ ), > │ ) > │ > │ > │ get_alias_map(account2, alias1): Some( > │ { > │ AccountId( > │ "dev-20250305214902-88219061795944", > │ ): ( > │ 1741211344662493939, > │ 0, > │ ), > │ AccountId( > │ "dev-20250305214905-82658665942237", > │ ): ( > │ 1741211347300874382, > │ 1, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account2, alias2): Some( > │ {}, > │ ) > │ > │ > │ claim_alias(account1, alias2): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3713503321425, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > DSBs7irvwHcMDLnQBX5NoJRrN7JtgRBeRJTQYr2UeRbv, > │ block_hash: > 8RpDTGJCT54eC5562skwmHjAKdvDUZaRuaEFRfSo8JXV, > │ logs: [], > │ receipt_ids: [ > │ AHk3JRRQALbLsnzLnLvcAw2VDvc4zd7gBfbPs5X1peuo, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: > SuccessReceiptId(AHk3JRRQALbLsnzLnLvcAw2VDvc4zd7gBfbPs5X1peuo), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > AHk3JRRQALbLsnzLnLvcAw2VDvc4zd7gBfbPs5X1peuo, > │ block_hash: > FNACg9LrsCULXuvFBzo4U17r4jsar2xA6WZn9CofEPrH, > │ logs: [ > │ "21:49:08 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = > 1741211348314616852; signer_account_id = \"dev-20250305214902-88219061795944\"; > predecessor_account_id = \"dev-20250305214902-88219061795944\" }\n21:49:08 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias1\") }", > │ ], > │ receipt_ids: [ > │ vECF9ESJBGGXAd54QfNUftrFBjsumTfspCmtLManvFm, > │ ], > │ gas_burnt: NearGas { > │ inner: 3405378979339, > │ }, > │ tokens_burnt: NearToken { > │ inner: 340537897933900000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.0024806202187118995 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.002274793158198452 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias2", > │ 1741211348314616852, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias2): Some( > │ { > │ AccountId( > │ "dev-20250305214902-88219061795944", > │ ): ( > │ 1741211348314616852, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250305214905-82658665942237", > │ ): ( > │ 1741211347300874382, > │ 1, > │ ), > │ }, > │ ) > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3939014140281, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > AsRxq89ZbNXNe9zuhNbxtMZx43Kerfb5hvX86QRmTTPC, > │ block_hash: > 4GQdCeHPehzrp9H7DnwmU5G1MydPz9GPhmiQeif8gpCf, > │ logs: [], > │ receipt_ids: [ > │ 5B38GgJfhBpR8Jk5GzBPtbxjEpcnRSiZuvE9nAEex1he, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: > SuccessReceiptId(5B38GgJfhBpR8Jk5GzBPtbxjEpcnRSiZuvE9nAEex1he), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 5B38GgJfhBpR8Jk5GzBPtbxjEpcnRSiZuvE9nAEex1he, > │ block_hash: > 3vy5CZKf2QmRSwvWt9MdX3DLCbT6YLzHRm9RyES7MrUf, > │ logs: [ > │ "21:49:08 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1741211348924375854; signer_account_id = \"dev-20250305214902-88219061795944\"; > predecessor_account_id = \"dev-20250305214902-88219061795944\" }\n21:49:08 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias2\") }", > │ ], > │ receipt_ids: [ > │ 5Bt9KGD4o7jru7KdTvkAebuaqFgYqjRZqSU69hKJAu35, > │ ], > │ gas_burnt: NearGas { > │ inner: 3407707235695, > │ }, > │ tokens_burnt: NearToken { > │ inner: 340770723569500000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214859-25279219916241", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 5Bt9KGD4o7jru7KdTvkAebuaqFgYqjRZqSU69hKJAu35, > │ block_hash: > 9thbn4MDH15FsLqXvq2dbq8kYdu8zxmZ1UjzaaG31wWx, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250305214902-88219061795944", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002631261445707708 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.0022763484334442597 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias1", > │ 1741211348924375854, > │ 1, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250305214902-88219061795944", > │ ): ( > │ 1741211348924375854, > │ 1, > │ ), > │ AccountId( > │ "dev-20250305214905-82658665942237", > │ ): ( > │ 1741211347300874382, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account1, alias2): Some( > │ {}, > │ ) > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block > > ── [ 15.30m - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "cube.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib" --output-path > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # cube > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## cube > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open System > │ > open System.Threading.Tasks > │ > open System.Text > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let width = 160 > │ > let height = 44 > │ > let backgroundChar = '.' > │ > let distanceFromCam = 100.0 > │ > let k1 = 40.0 > │ > let incrementSpeed = 0.6 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_width > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_width () = > │ > 160i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_height > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_height () = > │ > 44i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_background_char > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_background_char () = > │ > '.' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_distance_from_cam > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_distance_from_cam () = > │ > 100f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_k1 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_k1 () = > │ > 40f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_increment_speed > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_increment_speed () = > │ > 0.6f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### rotation > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Rotation = { a: float; b: float; c: float } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type rotation = > │ > { > │ > a : f64 > │ > b : f64 > │ > c : f64 > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### cube > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Cube = { cubeWidth: float; horizontalOffset: float } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type cube = > │ > { > │ > cube_width : f64 > │ > horizontal_offset : f64 > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_cubes > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let cubes = [[ > │ > { cubeWidth = 20.0; horizontalOffset = -40.0 } > │ > { cubeWidth = 10.0; horizontalOffset = 10.0 } > │ > { cubeWidth = 5.0; horizontalOffset = 40.0 } > │ > ]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_cubes () : list cube = > │ > [[ > │ > { cube_width = 20; horizontal_offset = -40 } > │ > { cube_width = 10; horizontal_offset = 10 } > │ > { cube_width = 5; horizontal_offset = 40 } > │ > ]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_x > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateX i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > │ > j * cos a * sin c + k * sin a * sin c + i * cos b * cos > c > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_x i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > │ > j * cos a * sin c + k * sin a * sin c + i * cos b * cos > c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_y > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateY i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > j * cos a * cos c + k * sin a * cos c - > │ > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > │ > i * cos b * sin c > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_y i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > j * cos a * cos c + k * sin a * cos c - > │ > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > │ > i * cos b * sin c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_z > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateZ i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > k * cos a * cos b - j * sin a * cos b + i * sin b > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_z i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > k * cos a * cos b - j * sin a * cos b + i * sin b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_for_surface > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateForSurface cubeX cubeY cubeZ ch rot > horizontalOffset = > │ > let x = calculateX cubeX cubeY cubeZ rot > │ > let y = calculateY cubeX cubeY cubeZ rot > │ > let z = calculateZ cubeX cubeY cubeZ rot + > distanceFromCam > │ > let ooz = 1.0 / z > │ > let xp = int (float width / 2.0 + horizontalOffset + k1 > * ooz * x * 2.0) > │ > let yp = int (float height / 2.0 + k1 * ooz * y) > │ > let idx = xp + yp * width > │ > if idx >= 0 && idx < width * height > │ > then Some (idx, (ooz, ch)) > │ > else None > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > let calculate_for_surface cube_x cube_y cube_z ch rot > horizontal_offset = > │ > inl x = calculate_x cube_x cube_y cube_z rot > │ > inl y = calculate_y cube_x cube_y cube_z rot > │ > inl z = calculate_z cube_x cube_y cube_z rot + > get_distance_from_cam () > │ > inl ooz = 1.0 / z > │ > inl xp = i32 (f64 (get_width ()) / 2.0 + > horizontal_offset + get_k1 () * ooz > │ > * x * 2.0) > │ > inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * > ooz * y) > │ > inl idx = xp + yp * get_width () > │ > if idx >= 0 && idx < get_width () * get_height () > │ > then Some (idx, (ooz, ch)) > │ > else None > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### frange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let frange start stop step = > │ > seq { > │ > let mutable current = start > │ > while (step > 0.0 && current < stop) || (step < 0.0 > && current > stop) > │ > do > │ > yield current > │ > current <- current + step > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl frange start stop step : _ f64 = > │ > fun () => > │ > inl current = mut start > │ > loopw.while > │ > fun () => (step > 0f64 && *current < stop) || > (step < 0 && *current > │ > > stop) > │ > fun () => > │ > *current |> yield > │ > current <- *current + step > │ > |> seq.new_seq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_cube_points > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCubePoints (cube: Cube) rot = > │ > let cw = cube.cubeWidth > │ > let ho = cube.horizontalOffset > │ > let cubeRange = frange (-cw) cw incrementSpeed > │ > seq { > │ > for cubeX in cubeRange do > │ > for cubeY in cubeRange do > │ > let x = > │ > [[ > │ > calculateForSurface cubeX cubeY > (-cw) '@' rot ho > │ > calculateForSurface cw cubeY cubeX > '$' rot ho > │ > calculateForSurface (-cw) cubeY > (-cubeX) '~' rot ho > │ > calculateForSurface (-cubeX) cubeY > cw '#' rot ho > │ > calculateForSurface cubeX (-cw) > (-cubeY) ';' rot ho > │ > calculateForSurface cubeX cw cubeY > '+' rot ho > │ > ]] > │ > |> Seq.choose id > │ > yield! x > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_cube_points (cube : cube) rot = > │ > inl cw = cube.cube_width > │ > inl ho = cube.horizontal_offset > │ > inl cube_range = frange -cw cw (get_increment_speed ()) > │ > inl cube_range = join cube_range > │ > inl get cube_x cube_y = > │ > [[ > │ > calculate_for_surface cube_x cube_y -cw ';' rot > ho > │ > calculate_for_surface cw cube_y cube_x '\\' rot > ho > │ > calculate_for_surface -cw cube_y -cube_x '/' > rot ho > │ > calculate_for_surface -cube_x cube_y cw '=' rot > ho > │ > calculate_for_surface cube_x -cw -cube_y '>' > rot ho > │ > calculate_for_surface cube_x cw cube_y '<' rot > ho > │ > ]] > │ > |> listm'.box > │ > inl get = join get > │ > inl box x : _ (i32 * f64 * char) = > │ > optionm'.box x > │ > inl box = join box > │ > fun () => > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for cube_x in !cube_range do' > │ > $'for cube_y in !cube_range do' > │ > $'let x = !get cube_x cube_y |> Seq.choose > !box ' > │ > $'yield\! x' : () > │ > Python = fun () => > │ > $'cube_range = !cube_range ' > │ > $'get = !get ' > │ > $'box = !box ' > │ > $'for cube_x in cube_range:' > │ > $' for cube_y in cube_range:' > │ > $' x = get(cube_x)(cube_y)' > │ > $' for i in x:' > │ > $' i_ = box(i)' > │ > $' if i_ is not None: yield i' : > () > │ > } > │ > |> seq.new_seq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### generate_frame > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let generateFrame rot = > │ > let updates = > │ > cubes > │ > |> Seq.collect (fun cube -> getCubePoints cube rot) > │ > let buffer = Array.create (width * height) None > │ > updates > │ > |> Seq.iter (fun (idx, (ooz, ch)) -> > │ > match buffer.[[idx]] with > │ > | Some (prevOoz, _) when prevOoz >= ooz -> () > │ > | _ -> buffer.[[idx]] <- Some (ooz, ch) > │ > ) > │ > let sb = StringBuilder() > │ > for row in 0 .. (height - 1) do > │ > for col in 0 .. (width - 1) do > │ > let idx = col + row * width > │ > let ch = > │ > match buffer.[[idx]] with > │ > | Some (_, ch) -> ch > │ > | None -> backgroundChar > │ > sb.Append(ch) |> ignore > │ > sb.AppendLine() |> ignore > │ > sb.ToString() > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let rot = { a = 0.0; b = 0.0; c = 0.0 } > │ > let frame = generateFrame rot > │ > Console.Write frame > │ > > │ > ── [ 37.26ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................+++++++++.................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .+++++++++++++++++$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................++++++++++++++++++++++++++++++++++++++++.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl generate_frame rot = > │ > inl updates : seq.seq' (int * (f64 * char)) = > │ > inl get_cube_points' cube : seq.seq' (int * (f64 * > char)) = > │ > get_cube_points cube rot > │ > inl cubes = get_cubes () |> listm'.box > │ > backend_switch { > │ > Fsharp = fun () => > │ > inl get_cube_points' = join > get_cube_points' > │ > (cubes |> $'Seq.collect !get_cube_points' > ') : seq.seq' (int * > │ > (f64 * char)) > │ > Python = fun () => > │ > $'cubes = !cubes ' > │ > $'get_cube_points = !get_cube_points' ' > │ > $'[[x for cube in cubes for x in > get_cube_points(*cube)]]' : > │ > seq.seq' (int * (f64 * char)) > │ > } > │ > inl none : _ (f64 * char) = None > │ > inl width = get_width () > │ > inl height = get_height () > │ > inl buffer = > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'Array.create (!width * !height) !none ' : > a int (option (f64 * > │ > char)) > │ > Python = fun () => > │ > $'[[!none for _ in range(!width * > !height)]]' : a int (option > │ > (f64 * char)) > │ > } > │ > > │ > inl fn idx ((ooz : f64), (ch : char)) = > │ > match buffer |> am'.index idx with > │ > | Some (prev_ooz, _) when prev_ooz >= ooz => () > │ > | _ => > │ > inl x = (ooz, ch) |> Some > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'!buffer.[[!idx]] <- !x ' : () > │ > Python = fun () => > │ > $'!buffer[[!idx]] = !x ' : () > │ > } > │ > backend_switch { > │ > Fsharp = fun () => > │ > updates > │ > |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> > !fn idx (ooz, ch))' : > │ > () > │ > Python = fun () => > │ > $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, > ch)' : () > │ > } > │ > > │ > inl sb = "" |> sm'.string_builder > │ > inl fn1 row = > │ > inl fn2 col = > │ > inl idx = col + row * width > │ > inl ch = > │ > match buffer |> am'.index idx with > │ > | Some (_, ch) => ch > │ > | None => get_background_char () > │ > sb |> sm'.builder_append (ch |> > sm'.obj_to_string) |> ignore > │ > > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for col in 0 .. (!width - 1) do !fn2 col' > : () > │ > Python = fun () => > │ > $'for col in range(!width): !fn2(col)' : () > │ > } > │ > sb |> sm'.builder_append_line |> ignore > │ > > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for row in 0 .. (!height - 1) do !fn1 row' : > () > │ > Python = fun () => > │ > $'for row in range(!height): !fn1(row)' : () > │ > } > │ > sb |> sm'.obj_to_string > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > { a = 0.0; b = 0.0; c = 0.0 } > │ > |> generate_frame > │ > |> console.write_line > │ > > │ > ── [ 4.74s - return value ] > ──────────────────────────────────────────────────── > │ > │ " > │ > │ .py output (Cuda): > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > │ > │ > │ " > │ > │ > │ > > │ > ── [ 4.74s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .<<<<<<<<<<<<<<<<<\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main_loop > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec mainLoop rot = async { > │ > let frame = generateFrame rot > │ > // Console.SetCursorPosition(0, 0) > │ > Console.Write(frame) > │ > let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = > rot.c + 0.01 } > │ > do! Async.Sleep 16 > │ > return! mainLoop rot' > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > let rec main_loop max i rot = > │ > fun () => > │ > inl rot = join rot > │ > inl frame = rot |> generate_frame > │ > if max < 0 then > │ > run_target function > │ > | Fsharp (Native) => fun () => > │ > $'System.Console.SetCursorPosition (0, 0)' > │ > | Rust _ => fun () => > │ > open rust.rust_operators > │ > > !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"') > │ > | TypeScript _ => fun () => > │ > open typescript_operators > │ > > !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"') > │ > | Python _ => fun () => > │ > open python_operators > │ > // global "import sys" > │ > > !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"') > │ > | Cuda _ => fun () => > │ > global "import sys" > │ > $'sys.stdout.write("\\033[[1;1H")' > │ > | _ => fun () => () > │ > frame |> console.write_line > │ > async.sleep 1 |> async.do > │ > if max > 0 && i >= max > │ > then () > │ > else > │ > { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c > + 0.01 } > │ > |> main_loop max (i + 1) > │ > |> async.return_await' > │ > |> async.new_async_unit > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > // [[<EntryPoint>]] > │ > let main argv = > │ > // Console.CursorVisible <- false > │ > Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = > 0.0 }) > │ > System.Threading.Thread.Sleep(1000) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > // main [[||]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl main (_args : array_base string) = > │ > inl console = > │ > run_target function > │ > | Fsharp (Wasm) => fun () => false > │ > | _ => fun () => > │ > ((join "VSCODE_PID") |> > env.get_environment_variable |> sm'.length > │ > |> (=) 0i32) > │ > && ("AUTOMATION" |> > env.get_environment_variable |> sm'.length > │ > |> (=) 0i32) > │ > if console then > │ > run_target function > │ > | Fsharp (Native) => fun () => > $'System.Console.CursorVisible <- > │ > false' > │ > | Rust _ => fun () => > │ > open rust.rust_operators > │ > !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"') > │ > | TypeScript _ => fun () => > │ > open typescript_operators > │ > > !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"') > │ > | Python _ => fun () => > │ > open python_operators > │ > python.import_all "sys" > │ > > !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"') > │ > | _ => fun () => () > │ > main_loop (if console then -1i32 else 50) 1i32 { a = > 0.0; b = 0.0; c = 0.0 } > │ > |> fun x => > │ > run_target_args' x function > │ > | Fsharp (Wasm) > │ > | TypeScript _ => fun x => > │ > x > │ > |> async.start_child > │ > |> ignore > │ > | Python _ => fun x => > │ > x > │ > |> async.start_immediate > │ > threading.sleep' 2000 > │ > | _ => fun x => > │ > x > │ > |> async.run_synchronously > │ > > │ > inl main () = > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'let main_ = !main ' > │ > $'#if \!FABLE_COMPILER_RUST' > │ > $'main_ [[||]]' : () > │ > $'#else' > │ > $'let main args = main_ [[||]]; 0' : () > │ > $'#endif' : () > │ > Python = fun () => > │ > main ;[[]] > │ > } > │ > : () > │ > > │ > ── [ 2.82s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .<<<<<<<<<<<<<<<<<\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;................<<<<<....................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .<<<<<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<.................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;<<<<<<<<............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..<<<<<<<<<<.................................................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\................. > │ > > ................................................................................ > │ > │ > │ > > .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..............;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./<<<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./<<<<<<<<<<<<<<<............................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ................................................................................ > │ > │ > │ > > ......................<<<<<<<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.................................. > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//<<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ./<<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<<<<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >/;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.................................. > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<.................................... > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > .///<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > ./<<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.............. > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<<<................................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;................................... > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<.................................... > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > .///<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<............. > │ > > .<<<............................................................................ > │ > │ > │ > > .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>/;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............> > │ > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > │ > > ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;................................... > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > │ > > /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<.................................... > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > │ > > .///<<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............ > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<............. > │ > > .<<<<<<......................................................................... > │ > │ > │ > > ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ......................./<<<<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > │ > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > │ > > ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.................................. > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./ > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./ > │ > > /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\................................. > │ > │ > │ > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > │ > > /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.................................. > │ > │ > │ > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ > │ > > //////<<<<<<<<<<<<<<<<<............//<<<<<<<.................................... > │ > │ > │ > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ > │ > > /////<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............ > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ./<<<<<<<<...................................................................... > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............> > │ > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/ > │ > > ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............// > │ > > /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/ > │ > > //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<................................. > │ > │ > │ > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../ > │ > > ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.................................. > │ > │ > │ > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... > │ > > ///////<<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<........... > │ > > /////<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.............. > │ > > .///<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > .//<<<<<<<<<.................................................................... > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;.............................................. > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ../;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............> > │ > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/ > │ > > /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........// > │ > > //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\................................. > │ > │ > │ > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........// > │ > > //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<................................. > │ > │ > │ > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../ > │ > > ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.................................. > │ > │ > │ > > ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<........... > │ > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............. > │ > > //////<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... > │ > > .////<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ..<<<<<<<<<<<................................................................... > │ > │ > │ > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<....................................... > │ > > ................................................................................ > │ > │ > │ > > ......................../<<<<<<<<............................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>//;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > │ > > /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\................................... > │ > │ > │ > > .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/ > │ > > //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........./// > │ > > //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;................................. > │ > │ > │ > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........// > │ > > ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<................................. > │ > │ > │ > > ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./ > │ > > ////////;<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > │ > │ > > ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../ > │ > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. > │ > > //////<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > .///<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ..//<<<<<<<<<<.................................................................. > │ > │ > │ > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ..<............................................................................. > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//////<<<<<<<<<<<<<<<<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ........................////<<<<<<<<<<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ........................//<<<<<<<<<<............................................ > │ > > ................................................................................ > │ > │ > │ > > .........................<<<.................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................ > │ > > ................................................................................ > │ > │ > │ > > .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................... > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;\.............................................................. > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > │ > > /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\................................... > │ > │ > │ > > ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/ > │ > > //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.................................. > │ > │ > │ > > ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>// > │ > > ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;................................. > │ > │ > │ > > .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<......./// > │ > > ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<................................. > │ > │ > │ > > ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........// > │ > > /////////<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > │ > │ > > ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/ > │ > > ////////<<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > │ > │ > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... > │ > > ///////<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > .////<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ..//<<<<<<<<<<<................................................................. > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ...<<........................................................................... > │ > │ > │ > > ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................///////<<<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ......................../////<<<<<<<<<<<<<<<<................................... > │ > > ................................................................................ > │ > │ > │ > > ........................////<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ........................./<<<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ../;;;;;;;;;;;;;;............................................................... > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............> > │ > > ///////;;;;;;;;;;;;;;..............>/;;;;;;;.................................... > │ > │ > │ > > ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/ > │ > > ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > │ > │ > > ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>// > │ > > /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<................................. > │ > │ > │ > > ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<......../// > │ > > /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<................................. > │ > │ > │ > > ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........// > │ > > //////////<<<<<<<<<<<<<.........../////<<<<<<<.................................. > │ > │ > │ > > .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./ > │ > > /////////<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ////////<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ./////<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ..///<<<<<<<<<<................................................................. > │ > │ > │ > > .....................///////////////<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > .../<<<......................................................................... > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////////<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////////<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ........................///////<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .........................////<<<<<<<<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................//<<<<<<<............................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;..................................................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ..;;;;;;;;;;;;;;\............................................................... > │ > │ > │ > > ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > .>/;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > >///;/;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........> > │ > > //////;;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/ > │ > > ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > │ > │ > > ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>// > │ > > /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<................................. > │ > │ > │ > > ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........./// > │ > > //////////;<<<<<<<<<<<<<.........///////<<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.........../// > │ > > //////////<<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../ > │ > > /////////<<<<<<<<<<<<..............///<<<<<<.................................... > │ > │ > │ > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > ///////<<<<<<<<<<<<..................<.......................................... > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<................... > │ > > .//////<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ...//<<<<<<<<<<................................................................. > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ..../<<<........................................................................ > │ > │ > │ > > .....................///////////////<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//////////<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ........................////////<<<<<<<<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ..........................////<<<<<<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ..........................////<<<<<<<........................................... > │ > > ................................................................................ > │ > │ > │ > > ............................<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;....................................................... > │ > > ................................................................................ > │ > │ > │ > > ......................>;;;;;;;;;;;;;;;;;;;;..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.............................. > │ > > ................................................................................ > │ > │ > │ > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................ > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\......................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .>/;;;;;;;;;;;;;................................................................ > │ > │ > │ > > ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >//;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > >////;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........> > │ > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/ > │ > > ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>// > │ > > //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<................................. > │ > │ > │ > > ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........//// > │ > > ////////////<<<<<<<<<<<..........///////<<<<<<<................................. > │ > │ > │ > > ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............/// > │ > > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............// > │ > > //////////<<<<<<<<<<<..............///<<<<<<.................................... > │ > │ > │ > > ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ////////<<<<<<<<<<<..................<.......................................... > │ > │ > │ > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<................... > │ > > .//////<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<..................... > │ > > ...///<<<<<<<<<<................................................................ > │ > │ > │ > > ....................//////////////////<<<<<<<<<<<<<<<<<<<<...................... > │ > > ..../<<<<....................................................................... > │ > │ > │ > > .....................////////////////<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////////<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................////////<<<<<<<<<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................//////<<<<<<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ...........................////<<<<<<<<......................................... > │ > > ................................................................................ > │ > │ > │ > > ............................//<<<<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;................................................................. > │ > │ > │ > > ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >//;/;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............ > │ > > //////;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........> > │ > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/ > │ > > ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>// > │ > > ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............/// > │ > > ////////////<<<<<<<<<<<..........///////<<<<<<.................................. > │ > │ > │ > > ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............//// > │ > > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............// > │ > > //////////<<<<<<<<<<<...............///<<<<<.................................... > │ > │ > │ > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<................... > │ > > /////////<<<<<<<<<<................../.......................................... > │ > │ > │ > > ................//////////////////////////<<<<<<<<<<<<<<<<<<.................... > │ > > .///////<<<<<<<<<<.............................................................. > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<..................... > │ > > ...////<<<<<<<<<................................................................ > │ > │ > │ > > ....................///////////////////<<<<<<<<<<<<<<<<<<....................... > │ > > ...../<<<....................................................................... > │ > │ > │ > > ...................../////////////////<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////////////<<<<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................////////////<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................//////////<<<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ...........................///////<<<<<<<<<<<................................... > │ > > ................................................................................ > │ > │ > │ > > ............................/////<<<<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................//<<<<............................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................>;;;;;;;;;;;;.............................................. > │ > > ................................................................................ > │ > │ > │ > > .....................///;;;;;;;;;;;;;;;;;;;;;;.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;............................... > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\........................... > │ > > ................................................................................ > │ > │ > │ > > ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................ > │ > > ................................................................................ > │ > │ > │ > > ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;.................................................................. > │ > │ > │ > > .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > >///;;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............ > │ > > /////;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........> > │ > > ////////;/;;;;;;;;;;;;;............>/;;;;;;;.................................... > │ > │ > │ > > ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/ > │ > > //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>// > │ > > /////////////<<<<<<<<<<..........>///////<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............./// > │ > > ////////////<<<<<<<<<<...........////////<<<<<.................................. > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>/// > │ > > ///////////<<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<.............../// > │ > > ///////////<<<<<<<<<................///<<<<<.................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../ > │ > > //////////<<<<<<<<<.................../......................................... > │ > │ > │ > > ...............////////////////////////////<<<<<<<<<<<<<<<<<.................... > │ > > ..///////<<<<<<<<<.............................................................. > │ > │ > │ > > ................./////////////////////////<<<<<<<<<<<<<<<<...................... > │ > > ....////<<<<<<<<................................................................ > │ > │ > │ > > ...................//////////////////////<<<<<<<<<<<<<<<<....................... > │ > > ....../<<<...................................................................... > │ > │ > │ > > .....................//////////////////<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////////<<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ..........................///////////<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................////////<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .............................//////<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ...............................///<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > .................................<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................../;;;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > ....................>//;;;;;;;;;;;;;;;;;;;;;.................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;................................. > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////;/;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ...................//////////////;/;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>////////////////////;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .;;;;;;;;;;;;\.................................................................. > │ > │ > │ > > .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > >/;;/;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............ > │ > > /////;;/;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............> > │ > > ////////;;;;;;;;;;;;;;;............;;;;;;;;;.................................... > │ > │ > │ > > ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/ > │ > > ////////////;;<<<<<<<<<<..........>////;;;;;;;;................................. > │ > │ > │ > > ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............// > │ > > //////////////<<<<<<<<<...........//////;<<<<<<................................. > │ > │ > │ > > ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>// > │ > > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>/// > │ > > ////////////<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............///////////////////////////////<<<<<<<<<<<<<<<<................/// > │ > > ///////////<<<<<<<<<................///<<<<<.................................... > │ > │ > │ > > .............>///////////////////////////////<<<<<<<<<<<<<<<.................../ > │ > > //////////<<<<<<<<<............................................................. > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<..................... > │ > > ..///////<<<<<<<<<.............................................................. > │ > │ > │ > > ................///////////////////////////<<<<<<<<<<<<<<<...................... > │ > > ..../////<<<<<<<................................................................ > │ > │ > │ > > ..................////////////////////////<<<<<<<<<<<<<<<....................... > │ > > ......./<<...................................................................... > │ > │ > │ > > ..................../////////////////////<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////////////<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////////<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ...........................///////////<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ............................//////////<<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ..............................///////<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................////<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................<............................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;...................................................... > │ > > ................................................................................ > │ > │ > │ > > ....................>/;/;;;;;;;;;;;;;;.......................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////;/;;;;;;;;;;;;;;;;;................................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////;;/;;;;;;;;;;;;;;;;;.............................. > │ > > ................................................................................ > │ > │ > │ > > ...................////////////////;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////////;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................ > │ > > .;;;;;;;;;;;.................................................................... > │ > │ > │ > > .................>///////////////////////////////;;;;;<<<<<<<<<<<<<............. > │ > > >//;/;;;;;;;;;;;................................................................ > │ > │ > │ > > .................//////////////////////////////////<<<<<<<<<<<<<<<.............> > │ > > //////;//;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////////<<<<<<<<<<<<<<<..............> > │ > > /////////;/;;;;;;;;;<<<<...........;;;;;;;;..................................... > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<<<..............>/ > │ > > //////////////<<<<<<<<<...........>///;;;;;;;<<................................. > │ > │ > │ > > ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............// > │ > > //////////////<<<<<<<<<...........///////;<<<<<................................. > │ > │ > │ > > .............../////////////////////////////////<<<<<<<<<<<<<<<..............>// > │ > > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > │ > │ > > ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>/// > │ > > ////////////<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<...............//// > │ > > ////////////<<<<<<<<................////<<<<<................................... > │ > │ > │ > > ..............////////////////////////////////<<<<<<<<<<<<<<.................../ > │ > > ///////////<<<<<<<<............................................................. > │ > │ > │ > > .............>///////////////////////////////<<<<<<<<<<<<<<..................... > │ > > ..////////<<<<<<<<.............................................................. > │ > │ > │ > > .............../////////////////////////////<<<<<<<<<<<<<<...................... > │ > > .....////<<<<<<<................................................................ > │ > │ > │ > > .................//////////////////////////<<<<<<<<<<<<<<....................... > │ > > .......//<<..................................................................... > │ > │ > │ > > ....................///////////////////////<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................////////////////////<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ......................../////////////////<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................../////////////<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > .............................//////////<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ................................///////<<<<<.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................////<<<....................................... > │ > > ................................................................................ > │ > │ > │ > > .....................................<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;.......................................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//;/;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////;;;/;;;;;;;;;;;;;..................................... > │ > > ................................................................................ > │ > │ > │ > > ...................////////////;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////////;;;/;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////////;;/;;;;;;;;;;;;;;;............... > │ > > ;;;;;;;;;;;..................................................................... > │ > │ > │ > > .................>//////////////////////////////////<<<<<<<<<<<<<<.............. > │ > > >/;/;;;;;;;;;;;;................................................................ > │ > │ > │ > > .................//////////////////////////////////<<<<<<<<<<<<<<..............> > │ > > ///////;;/;;;;;;;;;;;........................................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<<<...............> > │ > > //////////;;/;;;<<<<<<<............/;;;;;;;\.................................... > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<<...............>/ > │ > > ///////////////<<<<<<<<...........>//;;/;;;;<<<................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<<<................// > │ > > //////////////<<<<<<<<............>///////<<<<.................................. > │ > │ > │ > > ...............>/////////////////////////////////<<<<<<<<<<<<<...............>// > │ > > /////////////<<<<<<<<............>///////<<<<<.................................. > │ > │ > │ > > .............../////////////////////////////////<<<<<<<<<<<<<................>// > │ > > /////////////<<<<<<<<............////////<<<<................................... > │ > │ > │ > > ..............>////////////////////////////////<<<<<<<<<<<<<................./// > │ > > ////////////<<<<<<<<................////<<<<<................................... > │ > │ > │ > > ............../////////////////////////////////<<<<<<<<<<<<...................// > │ > > ///////////<<<<<<<<............................................................. > │ > │ > │ > > .............>////////////////////////////////<<<<<<<<<<<<<..................... > │ > > ../////////<<<<<<<<............................................................. > │ > │ > │ > > .............////////////////////////////////<<<<<<<<<<<<<...................... > │ > > ...../////<<<<<<................................................................ > │ > │ > │ > > ................/////////////////////////////<<<<<<<<<<<<....................... > │ > > ........./<..................................................................... > │ > │ > │ > > .................../////////////////////////<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////////////<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////////////<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ............................//////////////<<<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ...............................//////////<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................///////<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................////<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................./........................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................;/;;;;;;;;................................................... > │ > > ................................................................................ > │ > │ > │ > > ...................//////;///;;;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;................................. > │ > > ................................................................................ > │ > │ > │ > > ..................>////////////////////;//;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////////;/;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////////<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > .................>//////////////////////////////////<<<<<<<<<<<<................ > │ > > /;;/;;;;;;;;;;;................................................................. > │ > │ > │ > > .................///////////////////////////////////<<<<<<<<<<<<...............> > │ > > ///////;;;;;;;;;;;;;;........................................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<<................> > │ > > /////////////;;<<<<<<<<............;;;;;;;;..................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<................>/ > │ > > ///////////////<<<<<<<............>//;;/;;<<<<<................................. > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<................>/ > │ > > ///////////////<<<<<<<............>///////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<<.................// > │ > > //////////////<<<<<<<............>///////<<<<<.................................. > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<<.................>// > │ > > /////////////<<<<<<<.............>///////<<<<................................... > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<<................./// > │ > > /////////////<<<<<<<................////<<<<<................................... > │ > │ > │ > > ..............>/////////////////////////////////<<<<<<<<<<<................../// > │ > > ////////////<<<<<<<............................................................. > │ > │ > │ > > ............../////////////////////////////////<<<<<<<<<<<...................... > │ > > ..//////////<<<<<<<............................................................. > │ > │ > │ > > .............//////////////////////////////////<<<<<<<<<<<...................... > │ > > ....../////<<<<<................................................................ > │ > │ > │ > > ..............////////////////////////////////<<<<<<<<<<<....................... > │ > > ........../<.................................................................... > │ > │ > │ > > ................./////////////////////////////<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > .....................////////////////////////<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ........................////////////////////<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................////////////////<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ................................///////////<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ...................................////////<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > .......................................///<<.................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;........................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................>//////;;;;;;;;;;............................................. > │ > > ................................................................................ > │ > │ > │ > > ..................>//////////////;;;;/;;;;;;.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////;/<<<<<<<<<................. > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////////<<<<<<<<<<................. > │ > > ................................................................................ > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<<<................. > │ > > ;/;;;;;;;;;;;;;................................................................. > │ > │ > │ > > .................///////////////////////////////////<<<<<<<<<<.................> > │ > > ///////;;;;;;;;;;;;;;<.......................................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<<................./ > │ > > //////////////;<<<<<<<.............;;;;;;;;..................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<................../ > │ > > ///////////////<<<<<<<............>//;;//;<<<<.................................. > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<<<.................>/ > │ > > ///////////////<<<<<<.............>///////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<..................// > │ > > //////////////<<<<<<<.............////////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<..................// > │ > > ///////////////<<<<<.............>///////<<<<................................... > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<<..................>// > │ > > /////////////<<<<<<<................/////<<<<................................... > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<................../// > │ > > /////////////<<<<<<............................................................. > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<<...................... > │ > > .///////////<<<<<<<............................................................. > │ > │ > │ > > ..............>/////////////////////////////////<<<<<<<<<<...................... > │ > > ......./////<<<<................................................................ > │ > │ > │ > > ..............//////////////////////////////////<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............////////////////////////////////<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ....................///////////////////////////<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////////////<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................./////////////////<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > .................................////////////<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................///////<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................................//<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................;;;........................................................... > │ > > ................................................................................ > │ > │ > │ > > ..................//;;;;;;/;;;;;;;;............................................. > │ > > ................................................................................ > │ > │ > │ > > ..................////////////////;;//;;;;;;;;;;;............................... > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////;;;/;<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<<.................> > │ > > /;;;;;;;;;;;;;.................................................................. > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<..................> > │ > > ///////;;;;;;;;/<<<<<<.......................................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<................../ > │ > > ////////////////<<<<<<.............;;;;;;;;..................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<.................../ > │ > > ///////////////<<<<<<.............>//;;;//<<<<.................................. > │ > │ > │ > > ................////////////////////////////////////<<<<<<<<..................>/ > │ > > ///////////////<<<<<<.............>///////<<<<.................................. > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<<..................>/ > │ > > //////////////<<<<<<..............////////<<<................................... > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<...................// > │ > > //////////////<<<<<<..............///////<<<<................................... > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<<<...................// > │ > > //////////////<<<<<<................/////<<<<................................... > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<...................>// > │ > > /////////////<<<<<<............................................................. > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<...................... > │ > > .////////////<<<<<<............................................................. > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<...................... > │ > > ......../////<<<................................................................ > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................./////////////////////////<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .............................///////////////////<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ...................................////////////<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > .........................................//////<<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................................../................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................>;;;;;;;;;;;;/;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////;;/;;/;;/;;;;;;;;<<....................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<...................; > │ > > ;;;;;/;;;;;;;................................................................... > │ > │ > │ > > .................////////////////////////////////////<<<<<<<...................> > │ > > ////////;;;///;;<<<<<........................................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<<<.................../ > │ > > ////////////////<<<<<..............;;;;;;;;..................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<<..................../ > │ > > ///////////////<<<<<<.............>//;;;;;<<<<.................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<<<..................../ > │ > > ///////////////<<<<<..............>///////<<<<.................................. > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<...................>/ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<<...................>/ > │ > > ///////////////<<<<<..............////////<<<................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<....................>/ > │ > > ///////////////<<<<<...............///////<<=................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<....................// > │ > > //////////////<<<<<............................................................. > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<<...................../ > │ > > //////////////<<<<<............................................................. > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ........./////<<................................................................ > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............///////////////////////////////////<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................////////////////////////////<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................////////////////////<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ...................................../////////////<<............................ > │ > > ................................................................................ > │ > │ > │ > > .............................................////<<............................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<....................; > │ > > ;/;;;;;;;;;;.................................................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................../ > │ > > ////////////;;;;<<<<............................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................../ > │ > > ////////////////<<<<...............;;;;;;;;..................................... > │ > │ > │ > > ................>/////////////////////////////////////<<<<<..................../ > │ > > ////////////////<<<<..............>//;;;;;<<<<.................................. > │ > │ > │ > > ................>/////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............////////<<.................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<....................>/ > │ > > ///////////////<<<<............................................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<<....................// > │ > > ///////////////<<<<............................................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<....................... > │ > > ............///<................................................................ > │ > │ > │ > > ................>////////////////////////////////////<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................////////////////////////////////////<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................////////////////////////////////////<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > .................///////////////////////////////////<<<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................///////////////////////<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .........................................///////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > ................;//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<.....................; > │ > > ;;;;;;;;;;;;;;;;<<<............................................................. > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<............................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<...............;;;;;;;;;<................................... > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<..............;;;;;;;;;<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............////////<<.................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<............................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<.....................> > │ > > ////////////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ..........................////////////////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................................//////<......................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................;;;;;;;;;//////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ..;;;;;;;;;;;;;;<<<............................................................. > │ > │ > │ > > ................>//////////////////////////////////////<<......................; > │ > > ;;//////////////<<<............................................................. > │ > │ > │ > > .................//////////////////////////////////////<<....................../ > │ > > ////////////////<<<....................;;;;<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<....................../ > │ > > ////////////////<<<...............;;;;;////<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<......................> > │ > > ////////////////<<<...............>////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > ////////////////<<<................////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > /////////////////<<<...............////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > /////////////////<<<.............../////////.................................... > │ > │ > │ > > .................>//////////////////////////////////////<....................... > │ > > /////////////////<<<............................................................ > │ > │ > │ > > ..................//////////////////////////////////////<....................... > │ > > /////////////////<<............................................................. > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................................................<......................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;;;;;;;;;;;;<......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;;;;;;//////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;;;;;;;;;;///////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>///////////////////////////////////////<....................... > │ > > ....;;;;;;;;;;;;<<.............................................................. > │ > │ > │ > > ................>///////////////////////////////////////<......................; > │ > > ;;;;////////////<<.............................................................. > │ > │ > │ > > .................///////////////////////////////////////<....................../ > │ > > ////////////////<<<....................;;;<<.................................... > │ > │ > │ > > .................///////////////////////////////////////<....................../ > │ > > /////////////////<<...............;;;;;////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<<.....................> > │ > > /////////////////<<...............>////////<<................................... > │ > │ > │ > > .................>///////////////////////////////////////<.....................> > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................///////////////////////////////////////<...................... > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................///////////////////////////////////////<...................... > │ > > /////////////////<<<...............>////////.................................... > │ > │ > │ > > ..................>//////////////////////////////////////<...................... > │ > > >/////////////////<<............................................................ > │ > │ > │ > > ..................>///////////////////////////////////////<..................... > │ > > >/////////////////<............................................................. > │ > │ > │ > > ...................///////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////////////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ....................////////////////////////////................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................................................;;;;;<......................... > │ > > ................................................................................ > │ > │ > │ > > .......................................;;;;;;;;;;/////<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;;///////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;;;;;;//////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>////////////////////////////////////////<....................... > │ > > ................<............................................................... > │ > │ > │ > > ................////////////////////////////////////////<....................... > │ > > .....;;;;;;;;;;;<............................................................... > │ > │ > │ > > ................>///////////////////////////////////////<<....................;; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > .................////////////////////////////////////////<...................../ > │ > > ////////////////<<.....................;;;<<.................................... > │ > │ > │ > > .................>///////////////////////////////////////<...................../ > │ > > /////////////////<................;;;;;////<.................................... > │ > │ > │ > > .................>///////////////////////////////////////<<....................> > │ > > /////////////////<<...............>////////<<................................... > │ > │ > │ > > ..................////////////////////////////////////////<..................... > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................>///////////////////////////////////////<..................... > │ > > //////////////////<................>////////<................................... > │ > │ > │ > > ..................>///////////////////////////////////////<<.................... > │ > > >/////////////////<<................//////...................................... > │ > │ > │ > > ...................////////////////////////////////////////<.................... > │ > > .//////////////////<............................................................ > │ > │ > │ > > ...................>///////////////////////////////////////<.................... > │ > > .>///////////////............................................................... > │ > │ > │ > > ...................>///////////////////////////////////////<<................... > │ > > .///............................................................................ > │ > │ > │ > > ....................////////////////////////////////////////<................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////////////////////////////////////<................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////////////////////////////////////<<.................. > │ > > ................................................................................ > │ > │ > │ > > ...................../////////////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .....................>/////////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................///////................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................................<.......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................................;;;;;;;<<......................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;;;;;;;////////<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;//////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;;;;/////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............../////////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>////////////////////////////////////////<....................... > │ > > .............;;;<............................................................... > │ > │ > │ > > ................/////////////////////////////////////////<...................... > │ > > .....;;;;;;;;///<............................................................... > │ > │ > │ > > ................>////////////////////////////////////////<....................;; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////////<...................>/ > │ > > /////////////////<.....................;;;<<.................................... > │ > │ > │ > > .................>////////////////////////////////////////<..................../ > │ > > /////////////////<<...............;;;;;////<.................................... > │ > │ > │ > > ................../////////////////////////////////////////<...................> > │ > > //////////////////<...............>////////<<................................... > │ > │ > │ > > ..................>////////////////////////////////////////<.................... > │ > > //////////////////<................/////////<................................... > │ > │ > │ > > ..................>////////////////////////////////////////<<................... > │ > > >//////////////////<...............>////////<................................... > │ > │ > │ > > ...................>////////////////////////////////////////<................... > │ > > .//////////////////<................/////=...................................... > │ > │ > │ > > ...................>////////////////////////////////////////<<.................. > │ > > .>/////////////////<<........................................................... > │ > │ > │ > > ....................>////////////////////////////////////////<.................. > │ > > ../////////////................................................................. > │ > │ > │ > > ....................>////////////////////////////////////////<<................. > │ > > ..>///.......................................................................... > │ > │ > │ > > ...................../////////////////////////////////////////<................. > │ > > ................................................................................ > │ > │ > │ > > .....................>////////////////////////////////////////<................. > │ > > ................................................................................ > │ > │ > │ > > ......................///////////////////////////////////////................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/////////////////////////////............................ > │ > > ................................................................................ > │ > │ > │ > > .......................////////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>//////////.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................................;;;<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................................;;;;;;///<.......................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;;;;;/////////<<......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;/////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;/////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;///////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..............;;;///////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............//////////////////////////////////////////<...................... > │ > > ............;;;<................................................................ > │ > │ > │ > > ...............>/////////////////////////////////////////<<..................... > │ > > .....;;;;;;;////<............................................................... > │ > │ > │ > > ................>/////////////////////////////////////////<....................; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////////<<..................;/ > │ > > /////////////////<.....................;;;<<.................................... > │ > │ > │ > > .................>/////////////////////////////////////////<.................../ > │ > > /////////////////<<...............;;;;;////<.................................... > │ > │ > │ > > ..................//////////////////////////////////////////<................... > │ > > //////////////////<<..............>////////<<................................... > │ > │ > │ > > ..................>/////////////////////////////////////////<<.................. > │ > > >//////////////////<...............>////////<................................... > │ > │ > │ > > ...................>/////////////////////////////////////////<.................. > │ > > .//////////////////<<...............////////<<.................................. > │ > │ > │ > > ..................../////////////////////////////////////////<<................. > │ > > .>//////////////////<...............>////....................................... > │ > │ > │ > > ....................>/////////////////////////////////////////<................. > │ > > ..///////////////////........................................................... > │ > │ > │ > > ...................../////////////////////////////////////////<<................ > │ > > ..>////////////................................................................. > │ > │ > │ > > .....................>/////////////////////////////////////////<................ > │ > > ...>////........................................................................ > │ > │ > │ > > ......................>/////////////////////////////////////////<............... > │ > > ................................................................................ > │ > │ > │ > > ......................./////////////////////////////////////////................ > │ > > ................................................................................ > │ > │ > │ > > .......................>/////////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ........................>//////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > .........................>//////////............................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................////.................................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................;;;/;........................... > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;;;/;//////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;///////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;/;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;/;/////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;//;///////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............;;/;;//////////////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............>>//////////////////////////////////////////...................... > │ > > ...........;;;//................................................................ > │ > │ > │ > > ...............>>//////////////////////////////////////////..................... > │ > > ......;;/////////............................................................... > │ > │ > │ > > ................>///////////////////////////////////////////.................... > │ > > ;;;///////////////.............................................................. > │ > │ > │ > > .................>//////////////////////////////////////////<.................;> > │ > > //////////////////<...................;;///<.................................... > │ > │ > │ > > .................>>//////////////////////////////////////////..................> > │ > > ///////////////////...............;;;;//////.................................... > │ > │ > │ > > ..................>>//////////////////////////////////////////.................. > │ > > >///////////////////...............>/////////................................... > │ > │ > │ > > ...................>//////////////////////////////////////////<................. > │ > > >>///////////////////..............>>////////<.................................. > │ > │ > │ > > ....................>//////////////////////////////////////////................. > │ > > .>>//////////////////...............>>////////.................................. > │ > │ > │ > > ....................>>//////////////////////////////////////////................ > │ > > ..>///////////////////...............>///....................................... > │ > │ > │ > > .....................>///////////////////////////////////////////............... > │ > > ...>////////////////............................................................ > │ > │ > │ > > ......................>//////////////////////////////////////////<.............. > │ > > ...>>/////////.................................................................. > │ > │ > │ > > ......................>>//////////////////////////////////////////.............. > │ > > ....>////....................................................................... > │ > │ > │ > > .......................>>/////////////////////////////////////////.............. > │ > > ................................................................................ > │ > │ > │ > > ........................>>//////////////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .........................>////////////////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .........................>>//////////////////////............................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>////////////////.................................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>///////////......................................... > │ > > ................................................................................ > │ > │ > │ > > ............................>////............................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................................;............................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;/;;///........................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;;//////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;/;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;/;/////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;/////////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .................;;;//////////////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..............;>///////////////////////////////////////////..................... > │ > > ...........;;;;/................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////////<.................... > │ > > ......;;/////////............................................................... > │ > │ > │ > > ................>///////////////////////////////////////////<................... > │ > > .;;;//////////////.............................................................. > │ > │ > │ > > .................>///////////////////////////////////////////<................;> > │ > > ///////////////////...................;;///<.................................... > │ > │ > │ > > .................>>///////////////////////////////////////////.................> > │ > > >///////////////////..............;;;;//////.................................... > │ > │ > │ > > ..................>>///////////////////////////////////////////................. > │ > > >///////////////////<.............>>/////////................................... > │ > │ > │ > > ...................>>///////////////////////////////////////////................ > │ > > .>///////////////////<.............>>/////////.................................. > │ > │ > │ > > ....................>>///////////////////////////////////////////............... > │ > > .>>///////////////////..............>>////////.................................. > │ > │ > │ > > .....................>///////////////////////////////////////////<.............. > │ > > ..>>///////////////////..............>////...................................... > │ > │ > │ > > ......................>///////////////////////////////////////////<............. > │ > > ...>>//////////////............................................................. > │ > │ > │ > > .......................>///////////////////////////////////////////............. > │ > > ....>>////////.................................................................. > │ > │ > │ > > ........................>//////////////////////////////////////////............. > │ > > .....>////...................................................................... > │ > │ > │ > > ........................>>/////////////////////////////////////................. > │ > > ................................................................................ > │ > │ > │ > > .........................>>///////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>//////////////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>////////////////////............................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>///////////////................................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>/////////........................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................>/////............................................ > │ > > ................................................................................ > │ > │ > │ > > .............................../................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................;;/<............................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;;//////<........................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;;//////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/;;//////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...........................;;//;////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;///////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ...................;/;////////////////////////////////////<..................... > │ > > ..............;................................................................. > │ > │ > │ > > ..............;;;;/////////////////////////////////////////<.................... > │ > > ..........;/////................................................................ > │ > │ > │ > > ..............;>////////////////////////////////////////////<................... > │ > > ......;;;;///////............................................................... > │ > │ > │ > > ................>////////////////////////////////////////////<.................. > │ > > ..;///////////////.............................................................. > │ > │ > │ > > .................>////////////////////////////////////////////.................; > │ > > ;//////////////////...................;;;//<.................................... > │ > │ > │ > > ..................>////////////////////////////////////////////................> > │ > > >///////////////////..............;;;///////<................................... > │ > │ > │ > > ...................>////////////////////////////////////////////<..............> > │ > > >>///////////////////.............>>/////////<.................................. > │ > │ > │ > > ....................>////////////////////////////////////////////<.............. > │ > > >>>///////////////////.............>>/////////.................................. > │ > │ > │ > > .....................>////////////////////////////////////////////<............. > │ > > .>>>///////////////////.............>>////////.................................. > │ > │ > │ > > ......................>////////////////////////////////////////////<............ > │ > > ..>>>/////////////////...............>>///...................................... > │ > │ > │ > > .......................>////////////////////////////////////////////............ > │ > > ...>>>////////////.............................................................. > │ > │ > │ > > ........................>///////////////////////////////////////////............ > │ > > ....>>>///////.................................................................. > │ > │ > │ > > .........................>>/////////////////////////////////////................ > │ > > .....>>////..................................................................... > │ > │ > │ > > ..........................>/////////////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>///////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .............................>////////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ..............................>>//////////////.................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................>>/////////...................................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>////.......................................... > │ > > ................................................................................ > │ > │ > │ > > .................................>/............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...............................................;;;/............................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................;;;//////............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;;///////////........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ............................;;/;////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;//////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .....................;/////////////////////////////////////..................... > │ > > .............;;................................................................. > │ > │ > │ > > .................;/;////////////////////////////////////////.................... > │ > > ..........;;////................................................................ > │ > │ > │ > > ...............;/////////////////////////////////////////////................... > │ > > ......;;;////////............................................................... > │ > │ > │ > > ...............>>/////////////////////////////////////////////.................. > │ > > ...;//////////////<............................................................. > │ > │ > │ > > ................>>/////////////////////////////////////////////................; > │ > > ;///////////////////..................;;;//<.................................... > │ > │ > │ > > ..................>>////////////////////////////////////////////<.............;; > │ > > >////////////////////..............;/////////................................... > │ > │ > │ > > ...................>>////////////////////////////////////////////<............\> > │ > > >>////////////////////............;>//////////.................................. > │ > │ > │ > > ....................>>////////////////////////////////////////////<............. > │ > > >>>////////////////////...........\>>//////////................................. > │ > │ > │ > > .....................>>/////////////////////////////////////////////............ > │ > > .>>>////////////////////............>>>//////................................... > │ > │ > │ > > .......................>/////////////////////////////////////////////........... > │ > > ..>>>////////////////................>>///...................................... > │ > │ > │ > > ........................>////////////////////////////////////////////........... > │ > > ...>>>////////////.............................................................. > │ > │ > │ > > .........................>>///////////////////////////////////////.............. > │ > > ....>>>>///////................................................................. > │ > │ > │ > > ..........................>>///////////////////////////////////................. > │ > > .....\>>>///.................................................................... > │ > │ > │ > > ...........................>>//////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>//////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > .............................>>//////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>//////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ................................>>/////////////................................. > │ > > ................................................................................ > │ > │ > │ > > .................................>>/////////.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>/////....................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................>//.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .............................................;;///.............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;;//////<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............................;;;////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;///////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;///////////////////////////////////..................... > │ > > .............;/................................................................. > │ > │ > │ > > ...................;;;//////////////////////////////////////<................... > │ > > ..........;;////................................................................ > │ > │ > │ > > ................;;////////////////////////////////////////////.................. > │ > > ......;;;////////............................................................... > │ > │ > │ > > ...............;>//////////////////////////////////////////////................. > │ > > ...;;//////////////......................<...................................... > │ > │ > │ > > ................>>//////////////////////////////////////////////................ > │ > > ;///////////////////..................;;;//<.................................... > │ > │ > │ > > .................>>>//////////////////////////////////////////////............;; > │ > > >////////////////////..............;;;///////................................... > │ > │ > │ > > ..................>>>//////////////////////////////////////////////...........>> > │ > > >>////////////////////<..........;;;>/////////.................................. > │ > │ > │ > > ...................>>>//////////////////////////////////////////////...........> > │ > > >>>/////////////////////..........>>>>/////////................................. > │ > │ > │ > > .....................>>>/////////////////////////////////////////////<.......... > │ > > >>>>>//////////////////............>>>>//////................................... > │ > │ > │ > > ......................>>>////////////////////////////////////////////........... > │ > > .\>>>>///////////////................>>>//...................................... > │ > │ > │ > > ........................>>>////////////////////////////////////////............. > │ > > ...>>>>///////////.............................................................. > │ > │ > │ > > .........................>>>////////////////////////////////////................ > │ > > ....>>>>>//////................................................................. > │ > │ > │ > > ..........................>>>////////////////////////////////................... > │ > > ......>>>>//.................................................................... > │ > │ > │ > > ............................>>>////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>////////////////............................. > │ > > ................................................................................ > │ > │ > │ > > .................................>>>////////////................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................>>>////////.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................>>>////..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>//....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...............................................;<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................................;;;//<.............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;///////<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;/////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;/////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;//////////////////////////////////.................... > │ > > ............;;<................................................................. > │ > │ > │ > > .....................;;//////////////////////////////////////................... > │ > > .........;//////................................................................ > │ > │ > │ > > ..................;///////////////////////////////////////////<................. > │ > > .......;//////////.............................................................. > │ > │ > │ > > ................;///////////////////////////////////////////////................ > │ > > ....;;/////////////......................;...................................... > │ > │ > │ > > ................>>>//////////////////////////////////////////////<.............. > │ > > .;;/////////////////<.................;;///<.................................... > │ > │ > │ > > ................>>>>///////////////////////////////////////////////............; > │ > > >/////////////////////.............;;////////................................... > │ > │ > │ > > ................;>>>>>//////////////////////////////////////////////<........;;> > │ > > >>/////////////////////<.........;;;>/////////<................................. > │ > │ > │ > > ..................>>>>>//////////////////////////////////////////////<........>> > │ > > >>>>////////////////////..........>>>>/////////................................. > │ > │ > │ > > ...................>>>>>//////////////////////////////////////////////.......... > │ > > >>>>>//////////////////............>>>>>/////................................... > │ > │ > │ > > .....................>>>>>//////////////////////////////////////////............ > │ > > .>>>>>>/////////////.................>>>>/...................................... > │ > │ > │ > > ......................>>>>>>/////////////////////////////////////............... > │ > > ...>>>>>//////////.............................................................. > │ > │ > │ > > ........................>>>>>//////////////////////////////////................. > │ > > ....>>>>>>/////................................................................. > │ > │ > │ > > ..........................>>>>>//////////////////////////////................... > │ > > ......>>>>>//................................................................... > │ > │ > │ > > ...........................>>>>>///////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>///////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>///////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>///////////////............................ > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ...................................=>>>>///////................................. > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>>///................................... > │ > > ................................................................................ > │ > │ > │ > > ........................................=>/..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;/................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;////............................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;///////<............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;;////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;;///////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ............................;/////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;/////////////////////////////////.................... > │ > > ...........;;/.................................................................. > │ > │ > │ > > .......................;;/////////////////////////////////////.................. > │ > > .........;;/////................................................................ > │ > │ > │ > > ....................;;/////////////////////////////////////////................. > │ > > .......;//////////.............................................................. > │ > │ > │ > > ..................;;/////////////////////////////////////////////............... > │ > > ....;;/////////////......................;...................................... > │ > │ > │ > > ................;;>///////////////////////////////////////////////<............. > │ > > ..;;/////////////////.................;;///<.................................... > │ > │ > │ > > ................;>>>////////////////////////////////////////////////...........; > │ > > ;/////////////////////.............\;////////<.................................. > │ > │ > │ > > ................>>>>>>///////////////////////////////////////////////<.......;;; > │ > > >>>/////////////////////.........;;;>//////////................................. > │ > │ > │ > > ................>>>>>>>>//////////////////////////////////////////////.......>>> > │ > > >>>>////////////////////.........>>>>>>////////................................. > │ > │ > │ > > ..................>>>>>>>>//////////////////////////////////////////...........> > │ > > >>>>>>////////////////.............>>>>>/////................................... > │ > │ > │ > > ...................\>>>>>>>///////////////////////////////////////.............. > │ > > .>>>>>>>////////////.................>>>>//..................................... > │ > │ > │ > > .....................>>>>>>>>///////////////////////////////////................ > │ > > ..>>>>>>>/////////.............................................................. > │ > │ > │ > > .......................>>>>>>>>///////////////////////////////.................. > │ > > ....>>>>>>>/////................................................................ > │ > │ > │ > > .........................>>>>>>>/////////////////////////////................... > │ > > ......>>>>>>//.................................................................. > │ > │ > │ > > ..........................>>>>>>>>/////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>/////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>>>//////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>>>//////////............................. > │ > > ................................................................................ > │ > │ > │ > > ....................................>>>>>>>//////............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................>>>>///................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................>>/.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .............................................;/................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................;;////............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;////////<............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;/////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............................;/////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .............................;/////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;////////////////////////////////<................... > │ > > ...........;;/.................................................................. > │ > │ > │ > > ........................;;////////////////////////////////////.................. > │ > > ........;;//////................................................................ > │ > │ > │ > > ......................;/////////////////////////////////////////................ > │ > > ......;;//////////.............................................................. > │ > │ > │ > > ...................;;////////////////////////////////////////////<.............. > │ > > ....;;;////////////<....................;;...................................... > │ > │ > │ > > .................;;////////////////////////////////////////////////<............ > │ > > ..;;/////////////////................;;;////.................................... > │ > │ > │ > > ................;;>>>////////////////////////////////////////////////........... > │ > > ;;/////////////////////............\;;///////<.................................. > │ > │ > │ > > ................;>>>>>>///////////////////////////////////////////////.......;;; > │ > > ;>>/////////////////////.........;;;>//////////................................. > │ > │ > │ > > ...............;>>>>>>>>/////////////////////////////////////////////........;>> > │ > > >>>>>///////////////////.........;>>>>>////////................................. > │ > │ > │ > > ................>>>>>>>>>>/////////////////////////////////////////...........>> > │ > > >>>>>>>///////////////.............>>>>>>////................................... > │ > │ > │ > > ..................>>>>>>>>>>>////////////////////////////////////............... > │ > > >>>>>>>>>///////////................\>>>>>/..................................... > │ > │ > │ > > ....................>>>>>>>>>>//////////////////////////////////................ > │ > > ..>>>>>>>>////////.............................................................. > │ > │ > │ > > ......................>>>>>>>>>>//////////////////////////////.................. > │ > > ....>>>>>>>>////................................................................ > │ > │ > │ > > ........................>>>>>>>>>>///////////////////////////................... > │ > > ......>>>>>>>//................................................................. > │ > │ > │ > > ..........................>>>>>>>>>>///////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>///////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>>>>>>////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>/////............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................>>>>>//............................... > │ > > ................................................................................ > │ > │ > │ > > .............................................../................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;;.................................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;////................................ > │ > > ................................................................................ > │ > │ > │ > > ........................................;;////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;////////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................;////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................;////////////////////////////////................... > │ > > ..........;;//.................................................................. > │ > │ > │ > > ..........................;////////////////////////////////////................. > │ > > ........;;//////................................................................ > │ > │ > │ > > ........................;///////////////////////////////////////<............... > │ > > .....;;;//////////.............................................................. > │ > │ > │ > > ......................;///////////////////////////////////////////<............. > │ > > ...\;;//////////////....................;<...................................... > │ > │ > │ > > ....................;;//////////////////////////////////////////////<........... > │ > > ..;;;/////////////////...............;;;///<.................................... > │ > │ > │ > > ..................;;>////////////////////////////////////////////////........... > │ > > ;;;/////////////////////...........;;;///////<.................................. > │ > │ > │ > > ................;;>>>>>//////////////////////////////////////////////.........;; > │ > > ;;>/////////////////////..........;;;//////////................................. > │ > │ > │ > > ...............;;>>>>>>>>//////////////////////////////////////////.........\;;> > │ > > >>>>>//////////////////..........;;>>>>////////................................. > │ > │ > │ > > ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>> > │ > > >>>>>>>///////////////.............>>>>>>////................................... > │ > │ > │ > > ................>>>>>>>>>>>>>////////////////////////////////////............... > │ > > >>>>>>>>>>//////////.................>>>>>/..................................... > │ > │ > │ > > ..................>>>>>>>>>>>>>>///////////////////////////////................. > │ > > .\>>>>>>>>>////////...................=......................................... > │ > │ > │ > > ....................\>>>>>>>>>>>>>////////////////////////////.................. > │ > > ....>>>>>>>>>////............................................................... > │ > │ > │ > > .......................>>>>>>>>>>>>>/////////////////////////................... > │ > > ......>>>>>>>>>/................................................................ > │ > │ > │ > > .........................>>>>>>>>>>>>>/////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>>>>>>>>>>>>//////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>///////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>//////////......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>///////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>>>>////........................... > │ > > ................................................................................ > │ > │ > │ > > ............................................=>>>>>/............................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...........................................;/<.................................. > │ > > ................................................................................ > │ > │ > │ > > .........................................;;////<................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;////////<.............................. > │ > > ................................................................................ > │ > │ > │ > > .....................................;;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;///////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................;;///////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;///////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;///////////////////////////////<.................. > │ > > ..........;;//.................................................................. > │ > │ > │ > > ..........................;;;//////////////////////////////////................. > │ > > .......;;;//////................................................................ > │ > │ > │ > > .........................;;//////////////////////////////////////............... > │ > > .....;;;//////////.............................................................. > │ > │ > │ > > .......................;;//////////////////////////////////////////<............ > │ > > ...;;;;/////////////....................;/...................................... > │ > │ > │ > > .....................;;//////////////////////////////////////////////........... > │ > > .;;;;/////////////////...............;;;////.................................... > │ > │ > │ > > ...................;;;///////////////////////////////////////////////........... > │ > > ;;;;////////////////////...........;;;////////.................................. > │ > │ > │ > > ..................;;>>>>////////////////////////////////////////////..........;; > │ > > ;;;>////////////////////..........;;;//////////................................. > │ > │ > │ > > ................;;>>>>>>>>////////////////////////////////////////...........;;; > │ > > >>>>>>/////////////////..........;;>>>>///////.................................. > │ > │ > │ > > ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>> > │ > > >>>>>>>>/////////////.............>>>>>>>>///................................... > │ > │ > │ > > ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............> > │ > > >>>>>>>>>>//////////................\>>>>>>/.................................... > │ > │ > │ > > ................\>>>>>>>>>>>>>>>>//////////////////////////////................. > │ > > .>>>>>>>>>>>///////....................=........................................ > │ > │ > │ > > ...................>>>>>>>>>>>>>>>>///////////////////////////.................. > │ > > ...>>>>>>>>>>>>///.............................................................. > │ > │ > │ > > .....................\>>>>>>>>>>>>>>>>///////////////////////................... > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>/////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>>>>/////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>/////////........................ > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>/////......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>>>>>>>//.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................................>>>>........................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................................;//................................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;/////................................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;;/////////............................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;///////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;//////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;///////////////////////////////.................. > │ > > .........;;;//.................................................................. > │ > │ > │ > > ..........................;;;;//////////////////////////////////................ > │ > > ......;;;;//////................................................................ > │ > │ > │ > > ........................;;;;//////////////////////////////////////.............. > │ > > ....;;;;;/////////.............................................................. > │ > │ > │ > > ......................;;;;;/////////////////////////////////////////............ > │ > > ...;;;;/////////////<..................<;<...................................... > │ > │ > │ > > .....................;;;;///////////////////////////////////////////............ > │ > > .;;;;;/////////////////..............;;;////.................................... > │ > │ > │ > > ...................;;;;;////////////////////////////////////////////............ > │ > > ;;;;////////////////////...........;;;;///////.................................. > │ > │ > │ > > ..................;;;;;>///////////////////////////////////////////...........;; > │ > > ;;;>////////////////////..........;;;//////////................................. > │ > │ > │ > > ................;;;;;>>>>>////////////////////////////////////////...........;;; > │ > > ;;>>>>/////////////////..........;;;>>>>//////.................................. > │ > │ > │ > > ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>> > │ > > >>>>>>>>>/////////////............>>>>>>>>///................................... > │ > │ > │ > > .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>> > │ > > >>>>>>>>>>>/////////................>>>>>>>/.................................... > │ > │ > │ > > ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////................. > │ > > .>>>>>>>>>>>>>/////....................>........................................ > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.................. > │ > > ...>>>>>>>>>>>>>//.............................................................. > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>/////////////////////................... > │ > > ......>>>>>>>>>>>............................................................... > │ > │ > │ > > .......................>>>>>>>>>>>>>>>>>>>//////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>>>>//////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>///////////..................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>>>>////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>////....................... > │ > > ................................................................................ > │ > │ > │ > > .....................................>>>>>>>>>>>>>>>>>>/........................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .........................................;;/.................................... > │ > > ................................................................................ > │ > │ > │ > > .......................................;;/////<................................. > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;/////////............................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;//////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;//////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;//////////////////////////////.................. > │ > > .........;;//<.................................................................. > │ > │ > │ > > .........................;;;;;;/////////////////////////////////................ > │ > > ......;;;;//////................................................................ > │ > │ > │ > > .......................;;;;;;;////////////////////////////////////<............. > │ > > ...;;;;;;/////////<............................................................. > │ > │ > │ > > ......................;;;;;;;///////////////////////////////////////............ > │ > > ..;;;;;//////////////..................;;....................................... > │ > │ > │ > > .....................;;;;;;////////////////////////////////////////............. > │ > > .;;;;;;////////////////.............;;;;////.................................... > │ > │ > │ > > ...................;;;;;;;////////////////////////////////////////.............. > │ > > ;;;;;;//////////////////...........;;;;///////<................................. > │ > │ > │ > > ..................;;;;;;;/////////////////////////////////////////............\; > │ > > ;;;;///////////////////...........;;;;/////////................................. > │ > │ > │ > > .................;;;;;;;>>>//////////////////////////////////////............;;; > │ > > ;;;>>>>///////////////...........;;;;>>>//////.................................. > │ > │ > │ > > ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;> > │ > > >>>>>>>>>////////////............\>>>>>>>>>//................................... > │ > │ > │ > > ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>> > │ > > >>>>>>>>>>>>/////////...............>>>>>>>>.................................... > │ > │ > │ > > .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////................. > │ > > >>>>>>>>>>>>>>>/////...................>........................................ > │ > │ > │ > > ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.................. > │ > > ...>>>>>>>>>>>>>>>/............................................................. > │ > │ > │ > > ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................. > │ > > ......>>>>>>>>>>>/.............................................................. > │ > │ > │ > > .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////................... > │ > > ................................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>>>>/////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>>>>>>>>/////..................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>//...................... > │ > > ................................................................................ > │ > │ > │ > > .....................................>>>>>>>>>>>>>>>>>>>>/...................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................................;;/<.................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................;;;/////.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;////////................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;//////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;//////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;//////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;/////////////////////////////<................. > │ > > ........;;;//................................................................... > │ > │ > │ > > ........................;;;;;;;;////////////////////////////////<............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > .......................;;;;;;;;////////////////////////////////////............. > │ > > ..<;;;;;;/////////<............................................................. > │ > │ > │ > > .....................\;;;;;;;;/////////////////////////////////////............. > │ > > ..;;;;;;/////////////..................;;<...................................... > │ > │ > │ > > ....................;;;;;;;;;/////////////////////////////////////.............. > │ > > \;;;;;;/////////////////............;;;;////.................................... > │ > │ > │ > > ...................;;;;;;;;;//////////////////////////////////////.............. > │ > > ;;;;;;/////////////////............;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;//////////////////////////////////////.............\; > │ > > ;;;;;//////////////////...........;;;;/////////................................. > │ > │ > │ > > .................;;;;;;;;;;>/////////////////////////////////////............\;; > │ > > ;;;;;>>///////////////...........;;;;;>>>/////.................................. > │ > │ > │ > > ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;; > │ > > ;>>>>>>>>>////////////...........;>>>>>>>>>//................................... > │ > │ > │ > > ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>> > │ > > >>>>>>>>>>>>>////////...............>>>>>>>>/................................... > │ > │ > │ > > ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................> > │ > > >>>>>>>>>>>>>>>>////...................=>....................................... > │ > │ > │ > > .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////................. > │ > > ..\>>>>>>>>>>>>>>>>............................................................. > │ > │ > │ > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.................. > │ > > ......>>>>>>>>>=>............................................................... > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.................. > │ > > ................................................................................ > │ > │ > │ > > .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///.................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/.................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>>>=>=>>................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;//..................................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;/////<.................................. > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;/////////................................ > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;;///////////<............................. > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;//////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;//////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;/////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;///////////////////////////<................. > │ > > ........;;;//................................................................... > │ > │ > │ > > .......................;;;;;;;;;;;///////////////////////////////............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;/////////////////////////////////.............. > │ > > ..;;;;;;;/////////<............................................................. > │ > │ > │ > > .....................;;;;;;;;;;;//////////////////////////////////.............. > │ > > .;;;;;;;/////////////..................;;<...................................... > │ > │ > │ > > ....................;;;;;;;;;;;//////////////////////////////////............... > │ > > ;;;;;;;;///////////////.............;;;;////<................................... > │ > │ > │ > > ...................;;;;;;;;;;;;//////////////////////////////////..............; > │ > > ;;;;;;;////////////////............;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;;;;///////////////////////////////////..............; > │ > > ;;;;;;/////////////////...........;;;;;////////................................. > │ > │ > │ > > .................;;;;;;;;;;;;///////////////////////////////////..............;; > │ > > ;;;;;;>>//////////////...........;;;;;>>>/////.................................. > │ > │ > │ > > ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;; > │ > > ;;>>>>>>>>>///////////...........;>>>>>>>>>>//.................................. > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;> > │ > > >>>>>>>>>>>>>>///////...............>>>>>>>>>................................... > │ > │ > │ > > ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\> > │ > > >>>>>>>>>>>>>>>>>>///..................>=....................................... > │ > │ > │ > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////................. > │ > > ..>>>>>>>>>>>>>>>>>>............................................................ > │ > │ > │ > > .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////................. > │ > > ......>>>>>>>>>>=............................................................... > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.................. > │ > > ................................................................................ > │ > │ > │ > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.................. > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.................. > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>==..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;/<..................................... > │ > > ................................................................................ > │ > │ > │ > > ....................................<;;;/////................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////<................................ > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;;;;///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;;//////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;;;/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;;;;////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;///////////////////////////................. > │ > > ........;;///................................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;//////////////////////////////............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;//////////////////////////////............... > │ > > ..;;;;;;;//////////............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;///////////////////////////////............... > │ > > \;;;;;;;;////////////<.................;;....................................... > │ > │ > │ > > ...................\;;;;;;;;;;;;;///////////////////////////////................ > │ > > ;;;;;;;;///////////////............<;;;;////<................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;///////////////////////////////...............; > │ > > ;;;;;;;;///////////////...........\;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;////////////////////////////////..............\; > │ > > ;;;;;;;///////////////............;;;;;////////................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;////////////////////////////////..............;; > │ > > ;;;;;;;>//////////////...........\;;;;;>>>////.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;; > │ > > ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.................................. > │ > │ > │ > > ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;; > │ > > >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/................................... > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>> > │ > > >>>>>>>>>>>>>>>>>>>//..................\=....................................... > │ > │ > │ > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................ > │ > > .\>>>>>>>>>>>>>>>>>>/........................................................... > │ > │ > │ > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////................. > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////................. > │ > > ................................................................................ > │ > │ > │ > > ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////................. > │ > > ................................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//................. > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>==........................ > │ > > ................................................................................ > │ > │ > │ > > .......................................>==...................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................................;;//...................................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;////.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................<;;;;;;;///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;//////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;;;/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;;;;///////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;///////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .....................\;;;;;;;;;;;;;;;//////////////////////////................. > │ > > .......<;;//<................................................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;///////////////////////////................ > │ > > ....<;;;;;//////................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > │ > > ..;;;;;;;;/////////............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > │ > > ;;;;;;;;;/////////////.................;/....................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;/////////////////////////////...............; > │ > > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............; > │ > > ;;;;;;;;//////////////............\;;;;;//////.................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\; > │ > > ;;;;;;;;//////////////............;;;;;///////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;; > │ > > ;;;;;;;;>/////////////............;;;;;>>>////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;; > │ > > ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;; > │ > > ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.................................. > │ > │ > │ > > ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>> > │ > > >>>>>>>>>>>>>>>>>>>>>/..................>....................................... > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................ > │ > > .>>>>>>>>>>>>>>>>>>>/........................................................... > │ > │ > │ > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................ > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................ > │ > > ................................................................................ > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................ > │ > > ................................................................................ > │ > │ > │ > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................ > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................>=....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................<;;/<...................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;;///<.................................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;;///////<................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;;;;//////////<.............................. > │ > > ................................................................................ > │ > │ > │ > > ............................<;;;;;;;;;;/////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ..........................<;;;;;;;;;;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;//////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;//////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;////////////////////////.................. > │ > > .......;;;//.................................................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;/////////////////////////................. > │ > > ....;;;;;;//////................................................................ > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................. > │ > > .<;;;;;;;;////////<............................................................. > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................; > │ > > ;;;;;;;;;;////////////.................;/....................................... > │ > │ > │ > > ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................; > │ > > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................; > │ > > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;;>////////////............;;;;;;>>////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;; > │ > > ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;; > │ > > >>>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > │ > │ > > ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................ > │ > > >>>>>>>>>>>>>>>>>>>>>........................................................... > │ > │ > │ > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............... > │ > > .....\>>>>>>>>=................................................................. > │ > │ > │ > > ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////............... > │ > > ................................................................................ > │ > │ > │ > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............... > │ > > ................................................................................ > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............... > │ > > ................................................................................ > │ > │ > │ > > ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...................... > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>>>>>>>>>>>............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................=....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................;;//....................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;////<.................................... > │ > > ................................................................................ > │ > │ > │ > > ................................<;;;;;;///////.................................. > │ > > ................................................................................ > │ > │ > │ > > ..............................<;;;;;;;;/////////<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;;;;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;;;;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > .......................<;;;;;;;;;;;;;;;//////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;/////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;;//////////////////////................... > │ > > .......;;;//.................................................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > │ > > ....;;;;;;//////................................................................ > │ > │ > │ > > ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > │ > > .;;;;;;;;;/////////............................................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................; > │ > > ;;;;;;;;;;///////////..................;/....................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................; > │ > > ;;;;;;;;;;////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\; > │ > > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;; > │ > > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > │ > > ;;;;;;;;;;>///////////............;;;;;;>>>///.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > │ > > ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;; > │ > > ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;; > │ > > ;;>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\ > │ > > >>>>>>>>>>>>>>>>>>>>............................................................ > │ > │ > │ > > ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... > │ > > .....>>>>>>>>>=................................................................. > │ > │ > │ > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.............. > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. > │ > > ................................................................................ > │ > │ > │ > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.................. > │ > > ................................................................................ > │ > │ > │ > > ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=......................... > │ > > ................................................................................ > │ > │ > │ > > .................................\>>>>>>>>>>>>>=................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ 00:00:21 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 449170 } > │ 00:00:21 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:22 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html > │ 00:00:22 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:22 v #7 ! validate(nb) > │ 00:00:23 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:23 v #9 ! return _pygments_highlight( > │ 00:00:23 v #10 ! [NbConvertApp] Writing 800315 bytes to > c:\home\git\polyglot\apps\spiral\temp\cube\cube.dib.html > │ 00:00:23 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 872 } > │ 00:00:23 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 872 } > │ 00:00:23 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content > $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"; cancellation_token = None; > environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace > = true; working_directory = None } } > │ 00:00:24 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:24 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:24 d #16 spiral.run / dib / { exit_code = 0; > result_length = 450101 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > cube.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > cube.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > cube / hash: / code.Length: 48513 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\cube > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: rs / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @oopbase > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 157ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 7272ms > │ > │ .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: ts / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to TypeScript compiler > │ Minimum @fable-org/fable-library-ts version (when installed > from npm): 1.10.0 > │ > │ Thanks to the contributor! @drk-mtr > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 141ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 7765ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning > FABLE: CultureInfo argument is ignored > │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning > FABLE: CultureInfo argument is ignored > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: py / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) > │ > │ Thanks to the contributor! @njlr > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Retrieving project options from cache, in case of issues run > `dotnet fable clean` or try `--noCache` option. > │ Project and references (14 source files) parsed in 140ms > │ > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this > assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, > skipping this assembly. Original error: The exception has been reported. This > internal exception should now be caught at an error recovery point on the stack. > Original message: The type 'MetadataUpdateHandlerAttribute' is required here and > is unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable > plugins, skipping this assembly. Original error: The exception has been > reported. This internal exception should now be caught at an error recovery > point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' > is required here and is unavailable. You must add a reference to assembly > 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, > PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan > C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/ > 9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping > this assembly. Original error: The exception has been reported. This internal > exception should now be caught at an error recovery point on the stack. Original > message: The type 'MetadataUpdateHandlerAttribute' is required here and is > unavailable. You must add a reference to assembly 'System.Runtime.Loader, > Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 7166ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning > FABLE: CultureInfo argument is ignored > │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning > FABLE: CultureInfo argument is ignored > │ polyglot/apps/spiral/temp/cube/build.ps1 / $targetDir: > C:\home\git\polyglot\target\Builder\cube / $projectName: cube / $env:CI:'' > │ bun install v1.2.4 (fd9a5ea6) > │ > │ Checked 11 installs across 13 packages (no changes) [62.00ms] > │ [INFO]: 🎯 Checking for the Wasm target... > │ [INFO]: 🌀 Compiling to Wasm... > │ Finished `dev` profile [unoptimized + debuginfo] > target(s) in 0.75s > │ [INFO]: ⬇️ Installing wasm-bindgen... > │ [INFO]: Optional field missing from Cargo.toml: > 'description'. This is not necessary, but recommended > │ [INFO]: ✨ Done in 1.81s > │ [INFO]: 📦 Your wasm pkg is ready to publish at > C:\home\git\polyglot\apps\spiral\temp\extension\pkg. > │ ▲ [WARNING] "import.meta" is not available with the > "iife" output format and will be empty [empty-import-meta] > │ > │ pkg/spiral_temp_extension.js:1445:66: > │ 1445 │ ...ath = new > URL('spiral_temp_extension_bg.wasm', import.meta.url); > │ ╵ > ~~~~~~~~~~~ > │ > │ You need to set the output format to "esm" for > "import.meta" to work correctly. > │ > │ 1 warning > │ > │ dist\spiral_temp_extension_bg-IZFFKPLC.wasm 4.5mb > ⚠️ > │ dist\devtools.js 29.0kb > │ dist\content_script.js 26.4kb > │ dist\service_worker.js 2.2kb > │ > │ ⚡ Done in 54ms > │ $ playwright test > │ > │ Running 3 tests using 3 workers > │ > │ [1/3] [Desktop Chrome] › extension.spec.ts:13:5 › libgen > │ [2/3] [Desktop Chrome] › extension.spec.ts:3:5 › popup > localhost > │ [3/3] [Desktop Chrome] › extension.spec.ts:8:5 › popup > extension > │ 1) [Desktop Chrome] › extension.spec.ts:13:5 › libgen > ──────────────────────────────────────────── > │ > │ Error: page.goto: net::ERR_CONNECTION_TIMED_OUT at > https://libgen.is/ > │ Call log: > │ - navigating to "https://libgen.is/", waiting until > "load" > │ > │ > │ 12 | > │ 13 | test("libgen", async ({ page }) => { > │ > 14 | await page.goto("https://libgen.is") > │ | ^ > │ 15 | await page.type("#searchform", "aaA") > │ 16 | await > expect(page.locator("#searchform")).toHaveValue("AAA") > │ 17 | }) > │ > │ at > C:\home\git\polyglot\apps\spiral\temp\extension\e2e\extension.spec.ts:14:14 > │ > │ > │ 1 failed > │ [Desktop Chrome] › extension.spec.ts:13:5 › libgen > ───────────────────────────────────────────── > │ 2 passed (28.8s) > │ > │ Serving HTML report at http://[::1]:9323. Press Ctrl+C to > quit. > │ error: script "test:e2e" exited with code 1 > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\apps\spiral\temp\extension / $OnError: Continue / > $exitcode: 1 / $Error: '' / $ScriptBlock: > │ '. $(Search-Command bun) test:e2e' > │ > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "build.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib" --output-path > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # test > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## include scripts > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### include notebook core > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../scripts/nbs_header.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Include core functions script > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../scripts/core.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Include spiral library > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../deps/spiral/lib/spiral/lib.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## execute project commands > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### run notebook with retries using > spiral supervisor > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . > ../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path > │ > test.dib --retries 3 } | Invoke-Block > │ > > │ > ── [ 18.92s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 spiral.main / { args > = > │ > Array(MutCell(["dib", "--path", "test.dib", "--retries", > "3"])) } > │ > │ 00:00:00 d #2 > runtime.execute_with_options / { > │ > file_name = dotnet; arguments = ["repl", > "--exit-after-run", "--run", > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib", > "--output-path", > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; options = { > │ > command = dotnet repl --exit-after-run --run > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib" > --output-path > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"; cancellation_token > │ > = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), > │ > ("AUTOMATION", "True")])); on_line = None; stdin = None; > trace = false; > │ > working_directory = None } } > │ > │ > > │ > │ > ── markdown > │ > > ──────────────────────────────────────────────────────────────────── > │ > │ > │ # test (Polyglot) > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > > │ > │ > open testing > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > inl jp = [[ "J"; "P" ]] > │ > │ > inl tf = [[ "T"; "F" ]] > │ > │ > inl sn = [[ "S"; "N" ]] > │ > │ > inl ie = [[ "I"; "E" ]] > │ > │ > > │ > │ > (ie, ([[]] : _ string)) > │ > │ > ||> listm.foldBack fun ie' acc => > │ > │ > inl ssnn acc' jp' = > │ > │ > (sn, acc') > │ > │ > ||> listm.foldBack fun sn' > acc' => > │ > │ > inl c' ie' sn' tf' jp' = > │ > │ > > $'$"{!ie'}{!sn'}{!tf'}{!jp'}"' > │ > │ > > │ > │ > if listm.length acc' % > 4i32 = 2 then > │ > │ > (tf, acc') > │ > │ > ||> listm.foldBack fun > tf' acc'' => > │ > │ > c' ie' sn' tf' jp' > :: acc'' > │ > │ > else > │ > │ > (acc', tf) > │ > │ > ||> listm.fold fun > acc'' tf' => > │ > │ > c' ie' sn' tf' jp' > :: acc'' > │ > │ > if acc = [[]] then > │ > │ > (acc, jp) > │ > │ > ||> listm.fold fun acc' jp' => > │ > │ > ssnn acc' jp' > │ > │ > else > │ > │ > (jp, acc) > │ > │ > ||> listm.foldBack fun jp' > acc' => > │ > │ > ssnn acc' jp' > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 1.01s - stdout ] > │ > ────────────────────────────────────────────────────────── > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "E" > │ > │ > │ let v1 : string > = "N" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "S" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "I" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v4 :: v24 > │ > │ > │ let v30 : > string list = v6 :: v26 > │ > │ > │ let v34 : > string list = v8 :: v30 > │ > │ > │ let v38 : > string list = v9 :: v34 > │ > │ > │ let v42 : > string list = v11 :: v38 > │ > │ > │ let v46 : > string list = v12 :: v42 > │ > │ > │ let v50 : > string list = v13 :: v46 > │ > │ > │ let v54 : > string list = v14 :: v50 > │ > │ > │ let v58 : > string list = v16 :: v54 > │ > │ > │ let v62 : > string list = v17 :: v58 > │ > │ > │ let v66 : > string list = v18 :: v62 > │ > │ > │ let v70 : > string list = v19 :: v66 > │ > │ > │ let v74 : > string list = v20 :: v70 > │ > │ > │ let v78 : > string list = v21 :: v74 > │ > │ > │ let v82 : > string list = v22 :: v78 > │ > │ > │ let v86 : > string list = v23 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v121 : > string = "__assert_eq'" > │ > │ > │ let v122 : > string = $"{v121} / > │ > actual: %A{v91} / > │ > │ > expected: %A{v110}" > │ > │ > │ let v125 : unit > = () > │ > │ > │ let v126 : > (unit -> unit) = > │ > closure0(v122) > │ > │ > │ let v127 : unit > = (fun () -> v126 > │ > (); v125) () > │ > │ > │ let v129 : bool > = v116 = false > │ > │ > │ if v129 then > │ > │ > │ > failwith<unit> v122 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ __assert_eq' / > actual: [|"ISTJ"; "ISFJ"; > │ > "INFJ"; "INTJ"; > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] / > │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; > "INTJ"; "ISTP"; "ISFP"; > │ > "INFP"; "INTP"; > │ > │ > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] > │ > │ > │ > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > inl i_e = > │ > │ > listm'.replicate 8i32 "I" ++ > listm'.replicate 8i32 "E" > │ > │ > inl s_n = > │ > │ > [[ "S"; "S"; "N"; "N" ]] > │ > │ > |> listm'.replicate 4i32 > │ > │ > |> listm'.collect id > │ > │ > inl t_f = > │ > │ > [[ "T"; "F"; "F"; "T" ]] > │ > │ > |> listm'.replicate 4i32 > │ > │ > |> listm'.collect id > │ > │ > inl j_p = > │ > │ > [[ "J"; "J"; "J"; "J" ]] > │ > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > │ > ++ [[ "J"; "J"; "J"; "J" ]] > │ > │ > inl mbti = > │ > │ > listm'.map4 (fun a b c d => > $'$"{!a}{!b}{!c}{!d}"') i_e > │ > s_n t_f j_p > │ > │ > > │ > │ > mbti > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 351.48ms - stdout ] > │ > ─────────────────────────────────────────────────────── > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "I" > │ > │ > │ let v1 : string > = "S" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "N" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "E" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v23 :: v24 > │ > │ > │ let v30 : > string list = v22 :: v26 > │ > │ > │ let v34 : > string list = v21 :: v30 > │ > │ > │ let v38 : > string list = v20 :: v34 > │ > │ > │ let v42 : > string list = v19 :: v38 > │ > │ > │ let v46 : > string list = v18 :: v42 > │ > │ > │ let v50 : > string list = v17 :: v46 > │ > │ > │ let v54 : > string list = v16 :: v50 > │ > │ > │ let v58 : > string list = v14 :: v54 > │ > │ > │ let v62 : > string list = v13 :: v58 > │ > │ > │ let v66 : > string list = v12 :: v62 > │ > │ > │ let v70 : > string list = v11 :: v66 > │ > │ > │ let v74 : > string list = v9 :: v70 > │ > │ > │ let v78 : > string list = v8 :: v74 > │ > │ > │ let v82 : > string list = v6 :: v78 > │ > │ > │ let v86 : > string list = v4 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v121 : > string = "__assert_eq'" > │ > │ > │ let v122 : > string = $"{v121} / > │ > actual: %A{v91} / > │ > │ > expected: %A{v110}" > │ > │ > │ let v125 : unit > = () > │ > │ > │ let v126 : > (unit -> unit) = > │ > closure0(v122) > │ > │ > │ let v127 : unit > = (fun () -> v126 > │ > (); v125) () > │ > │ > │ let v129 : bool > = v116 = false > │ > │ > │ if v129 then > │ > │ > │ > failwith<unit> v122 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ __assert_eq' / > actual: [|"ISTJ"; "ISFJ"; > │ > "INFJ"; "INTJ"; > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] / > │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; > "INTJ"; "ISTP"; "ISFP"; > │ > "INFP"; "INTP"; > │ > │ > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] > │ > │ > │ > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > fun i => > │ > │ > inl i_e = > │ > │ > if i < 8 > │ > │ > then "I" > │ > │ > else "E" > │ > │ > inl s_n = > │ > │ > inl group = (i / 2) % 2 > │ > │ > if group = 0 > │ > │ > then "S" > │ > │ > else "N" > │ > │ > inl t_f = > │ > │ > match i % 4 with > │ > │ > | 0 => "T" > │ > │ > | 1 => "F" > │ > │ > | 2 => "F" > │ > │ > | _ => "T" > │ > │ > inl j_p = > │ > │ > if i < 4 > │ > │ > then "J" > │ > │ > elif i < 12 > │ > │ > then "P" > │ > │ > else "J" > │ > │ > $'$"{!i_e}{!s_n}{!t_f}{!j_p}"' > │ > │ > |> listm.init 16i32 > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 326.91ms - stdout ] > │ > ─────────────────────────────────────────────────────── > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "I" > │ > │ > │ let v1 : string > = "S" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "N" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "E" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v23 :: v24 > │ > │ > │ let v30 : > string list = v22 :: v26 > │ > │ > │ let v34 : > string list = v21 :: v30 > │ > │ > │ let v38 : > string list = v20 :: v34 > │ > │ > │ let v42 : > string list = v19 :: v38 > │ > │ > │ let v46 : > string list = v18 :: v42 > │ > │ > │ let v50 : > string list = v17 :: v46 > │ > │ > │ let v54 : > string list = v16 :: v50 > │ > │ > │ let v58 : > string list = v14 :: v54 > │ > │ > │ let v62 : > string list = v13 :: v58 > │ > │ > │ let v66 : > string list = v12 :: v62 > │ > │ > │ let v70 : > string list = v11 :: v66 > │ > │ > │ let v74 : > string list = v9 :: v70 > │ > │ > │ let v78 : > string list = v8 :: v74 > │ > │ > │ let v82 : > string list = v6 :: v78 > │ > │ > │ let v86 : > string list = v4 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v121 : > string = "__assert_eq'" > │ > │ > │ let v122 : > string = $"{v121} / > │ > actual: %A{v91} / > │ > │ > expected: %A{v110}" > │ > │ > │ let v125 : unit > = () > │ > │ > │ let v126 : > (unit -> unit) = > │ > closure0(v122) > │ > │ > │ let v127 : unit > = (fun () -> v126 > │ > (); v125) () > │ > │ > │ let v129 : bool > = v116 = false > │ > │ > │ if v129 then > │ > │ > │ > failwith<unit> v122 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ __assert_eq' / > actual: [|"ISTJ"; "ISFJ"; > │ > "INFJ"; "INTJ"; > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP"; > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] / > │ > │ > expected: [|"ISTJ"; "ISFJ"; "INFJ"; > "INTJ"; "ISTP"; "ISFP"; > │ > "INFP"; "INTP"; > │ > │ > "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] > │ > │ > │ > │ > │ > > │ > │ > ── fsharp > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > type PhonologicalFeature = > │ > │ > | VowelFeature of > │ > │ > height: Height > │ > │ > * backness: Backness > │ > │ > * roundedness: Roundedness > │ > │ > * tone: Option<Tone> > │ > │ > * stress: Option<Stress> > │ > │ > * length: Option<Length> > │ > │ > | ConsonantFeature of > │ > │ > place: PlaceOfArticulation > │ > │ > * manner: MannerOfArticulation > │ > │ > * voicing: Voicing > │ > │ > * length: Option<Length> > │ > │ > | VowelHarmonyFeature > │ > │ > | PitchAccentFeature > │ > │ > > │ > │ > and Stress = Primary | Secondary > │ > │ > and Length = Long | Short | HalfLong > │ > │ > > │ > │ > and Height = > │ > │ > | High | NearHigh | HighMid > │ > │ > | Mid | LowMid | NearLow > │ > │ > | Low > │ > │ > > │ > │ > and Backness = Front | Central | Back > │ > │ > > │ > │ > and Roundedness = Rounded | Unrounded > │ > │ > > │ > │ > and PlaceOfArticulation = > │ > │ > | Bilabial | Labiodental | Dental > │ > │ > | Alveolar | Postalveolar | > Retroflex > │ > │ > | Palatal | Velar | Uvular > │ > │ > | Pharyngeal | Epiglottal | > Glottal > │ > │ > > │ > │ > and MannerOfArticulation = > │ > │ > | Plosive | Nasal | Trill > │ > │ > | TapOrFlap | Fricative | > LateralFricative > │ > │ > | Approximant | LateralApproximant > │ > │ > > │ > │ > and Voicing = Voiced | Voiceless > │ > │ > > │ > │ > and SecondaryArticulation = > │ > │ > | Labialization | Palatalization | > Velarization > │ > │ > | Pharyngealization | Aspiration > │ > │ > > │ > │ > and Tone = > │ > │ > | LevelTone of int > │ > │ > | ContourTone of int list > │ > │ > > │ > │ > and MorphologicalFeature = > │ > │ > | RootFeature of string > │ > │ > | AffixFeature of AffixType * > string > │ > │ > | IncorporationFeature of string * > MorphologicalFeature > │ > │ > | NonConcatenativePattern of > string * string > │ > │ > | AgglutinativeAffixFeature of > AgglutinativeAffixType * > │ > string > │ > │ > | HonorificFeature of > HonorificType * string > │ > │ > > │ > │ > and AgglutinativeAffixType = Suffix | > Prefix > │ > │ > > │ > │ > and HonorificType = VerbHonorific | > NounHonorific > │ > │ > > │ > │ > and AffixType = > │ > │ > | Prefix | Suffix | Infix > │ > │ > | Circumfix > │ > │ > > │ > │ > type SyntacticFeature = > │ > │ > | WordFeature of > MorphologicalFeature list * > │ > LexicalCategory > │ > │ > | PhraseFeature of PhraseType * > SyntacticFeature list > │ > │ > | GrammaticalRelation of > GrammaticalRelationType * > │ > SyntacticFeature list > │ > │ > | SOVOrderFeature > │ > │ > | TopicCommentFeature > │ > │ > > │ > │ > and GrammaticalRelationType = > │ > │ > | Ergative | Absolutive | > Nominative > │ > │ > | Accusative > │ > │ > > │ > │ > and LexicalCategory = > │ > │ > | Noun | Verb | Adjective > │ > │ > | Adverb | Pronoun | Preposition > │ > │ > | Conjunction | Determiner | > Interjection > │ > │ > > │ > │ > and PhraseType = > │ > │ > | NP | VP | AP > │ > │ > | PP | CP > │ > │ > > │ > │ > and SemanticFeature = > │ > │ > | Meaning of string > │ > │ > | SemanticRole of SemanticRoleType > * SemanticFeature > │ > │ > > │ > │ > and SemanticRoleType = > │ > │ > | Agent | Patient | Instrument > │ > │ > | Location | Time | Cause > │ > │ > > │ > │ > and PragmaticFeature = > │ > │ > | UseContext of string > │ > │ > | PolitenessLevel of Politeness > │ > │ > | SpeechAct of SpeechActType > │ > │ > | SpeechLevel of SpeechLevelType > │ > │ > > │ > │ > and Politeness = Formal | Informal | > Neutral > │ > │ > > │ > │ > and SpeechActType = > │ > │ > | Assertive | Directive | > Commissive > │ > │ > | Expressive | Declarative > │ > │ > > │ > │ > and SpeechLevelType = > │ > │ > | FormalHigh | FormalLow | > InformalHigh > │ > │ > | InformalLow | Neutral > │ > │ > > │ > │ > type LinguisticFeature = > │ > │ > | Phonological of > PhonologicalFeature > │ > │ > | Morphological of > MorphologicalFeature > │ > │ > | Syntactic of SyntacticFeature > │ > │ > | Semantic of SemanticFeature > │ > │ > | Pragmatic of PragmaticFeature > │ > │ > > │ > │ > type LanguageConstruct = > │ > │ > | LanguageElement of > LinguisticFeature > │ > │ > | LanguageStructure of > LanguageConstruct list > │ > │ > | TranslationElement of > TranslationFeature > │ > │ > > │ > │ > and TranslationFeature = > │ > │ > | LinkedPhonological of > PhonologicalFeature * > │ > PhonologicalFeature > │ > │ > | LinkedMorphological of > MorphologicalFeature * > │ > MorphologicalFeature > │ > │ > | LinkedSyntactic of > SyntacticFeature * > │ > SyntacticFeature > │ > │ > | LinkedSemantic of > SemanticFeature * SemanticFeature > │ > │ > > │ > │ > type Discourse = DiscourseUnit of > LanguageConstruct list > │ > │ > > │ > │ > type LanguageModel = > │ > │ > | Model of discourse: Discourse > │ > │ > > │ > │ > ── fsharp > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > let testEnglish = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Alveolar, Nasal, > │ > │ > Voiced, Some(HalfLong)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Front, Unrounded, > │ > │ > Some(LevelTone 1), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Low, Front, Unrounded, > │ > │ > Some(LevelTone 2), Some(Secondary), > Some(Long)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Velar, Plosive, > │ > │ > Voiceless, Some(HalfLong)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "I")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "see")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "a")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "cat")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "I"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "see"]], Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "a"; RootFeature > "cat"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "Perception > │ > act of a feline by > │ > │ > the speaker")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "Statement of an action being > │ > │ > observed")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > let testPortuguese = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Front, Unrounded, > │ > │ > Some(LevelTone 1), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Low, Front, Unrounded, > │ > │ > Some(LevelTone 2), Some(Secondary), > Some(Long)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Mid, Back, Rounded, > │ > │ > Some(LevelTone 3), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Velar, Plosive, > │ > │ > Voiceless, Some(HalfLong)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "Eu")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "ver" |> ignore; > │ > │ > AffixFeature (Suffix, "o"))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "um")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "gato")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "Eu"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "vejo"]], Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "um"; RootFeature > "gato"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "Ação de > │ > percepção de um felino > │ > │ > pelo falante")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "Declaração de uma ação sendo > │ > │ > observada")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > let testKorean = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Alveolar, Nasal, > │ > │ > Voiced, Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Back, Rounded, > │ > │ > None, None, Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Mid, Front, Unrounded, > │ > │ > None, None, Some(Long)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Bilabial, Plosive, > │ > │ > Voiceless, Some(Short)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "나")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "보다")); > │ > │ > LanguageElement > (Morphological (AffixFeature > │ > (Suffix, "아"))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "고양이")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "나"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "보다"; AffixFeature > (Suffix, "아")]], > │ > Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "고양이"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "화자에 의한 > │ > 고양이의 관찰 > │ > │ > 행위")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "관찰되고 있는 행동의 진술")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > ── markdown > │ > > ──────────────────────────────────────────────────────────────────── > │ > │ > │ ## main > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > inl main (_args : array_base string) = > │ > │ > 0i32 > │ > │ > > │ > │ > inl main () = > │ > │ > $'let main args = !main args' : () > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > inl app () = > │ > │ > "test" |> console.write_line > │ > │ > 0i32 > │ > │ > > │ > │ > inl main () = > │ > │ > print_static "<test>" > │ > │ > > │ > │ > app > │ > │ > |> dyn > │ > │ > |> ignore > │ > │ > > │ > │ > print_static "</test>" > │ > │ 00:00:16 v #3 > runtime.execute_with_options / result / { > │ > exit_code = 0; std_trace_length = 27103 } > │ > │ 00:00:16 d #4 > runtime.execute_with_options / { > │ > file_name = jupyter; arguments = ["nbconvert", > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb", "--to", "html", > │ > "--HTMLExporter.theme=dark"]; options = { command = jupyter > nbconvert > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb" > --to html > │ > --HTMLExporter.theme=dark; cancellation_token = None; > environment_variables = > │ > Array(MutCell([])); on_line = None; stdin = None; trace = > true; > │ > working_directory = None } } > │ > │ 00:00:17 v #5 ! [NbConvertApp] > Converting notebook > │ > c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb > to html > │ > │ 00:00:17 v #6 ! > │ > > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > │ > py:96: MissingIDFieldWarning: Cell is missing an id field, > this will become a > │ > hard error in future nbformat versions. You may want to use > `normalize()` on > │ > your notebooks before validations (available since nbformat > 5.1.4). Previous > │ > versions of nbformat are fixing this issue transparently, > and will stop doing so > │ > in the future. > │ > │ 00:00:17 v #7 ! validate(nb) > │ > │ 00:00:17 v #8 ! > │ > > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > │ > highlight.py:71: UserWarning: IPython3 lexer unavailable, > falling back on Python > │ > 3 > │ > │ 00:00:17 v #9 ! return > _pygments_highlight( > │ > │ 00:00:18 v #10 ! [NbConvertApp] > Writing 332790 bytes to > │ > c:\home\git\polyglot\apps\spiral\temp\test\test.dib.html > │ > │ 00:00:18 v #11 > runtime.execute_with_options / result / > │ > { exit_code = 0; std_trace_length = 872 } > │ > │ 00:00:18 d #12 spiral.run / dib / > jupyter nbconvert / { > │ > exit_code = 0; jupyter_result_length = 872 } > │ > │ 00:00:18 d #13 > runtime.execute_with_options / { > │ > file_name = pwsh; arguments = ["-c", "$counter = 1; $path =│ > 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; > (Get-Content $path > │ > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + > │ > $counter++ } | Set-Content $path"]; options = { command = > pwsh -c "$counter = 1; > │ > $path = > 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content > │ > $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + > │ > $counter++ } | Set-Content $path"; cancellation_token = > None; > │ > environment_variables = Array(MutCell([])); on_line = None; > stdin = None; trace > │ > = true; working_directory = None } } > │ > │ 00:00:18 v #14 > runtime.execute_with_options / result / > │ > { exit_code = 0; std_trace_length = 0 } > │ > │ 00:00:18 d #15 spiral.run / dib / > html cell ids / { > │ > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ > │ 00:00:18 d #16 spiral.run / dib / > { exit_code = 0; > │ > result_length = 28034 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### parse the .dib file into .spi > format with dibparser > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib > spi } | Invoke-Block > │ > > │ > ── [ 449.60ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 writeDibCode / > output: Spi / path: > │ > test.dib > │ > │ 00:00:00 d #2 parseDibCode / > output: Spi / file: > │ > test.dib > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### build .fsx file from .spi using > supervisor > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . ../../../../apps/spiral/dist/Supervisor$(_exe) > --build-file test.spi > │ > test.fsx } | Invoke-Block > │ > > │ > ── [ 4.13s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ <test> > │ > │ </test> > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## compile and format the project > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### compile project with fable > targeting optimized rust > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > dotnet fable --optimize --lang rs --extension .rs > │ > > │ > ── [ 2.72s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ Fable 5.0.0-alpha.9: F# to Rust compiler > (status: alpha) > │ > │ > │ > │ Thanks to the contributor! @hensou > │ > │ Stand with Ukraine! > https://standwithukraine.com.ua/ > │ > │ > │ > │ Parsing test.fsproj... > │ > │ Retrieving project options from cache, > in case of issues run > │ > `dotnet fable clean` or try `--noCache` option. > │ > │ Project and references (1 source files) > parsed in 143ms > │ > │ > │ > │ Started Fable compilation... > │ > │ > │ > │ Fable compilation finished in 1328ms > │ > │ > │ > │ .\test.fsx(11,0): (11,2) warning FABLE: > For Rust, support for > │ > F# static and module do bindings is disabled by default. It > can be enabled with > │ > the 'static_do_bindings' feature. Use at your own risk! > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### fix formatting issues in the .rs > file using regex and > │ > set-content > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > (Get-Content test.rs) ` > │ > -replace [[regex]]::Escape("),);"), "));" ` > │ > | FixRust ` > │ > | Set-Content test.rs > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### format the rust code using cargo > fmt > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > cargo fmt -- > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## build and test the project > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### build the project in release mode > using nightly rust > │ > compiler > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > cargo build --release > │ > > │ > ── [ 6.98s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ Compiling fable_library_rust > v0.1.0 > │ > > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ > │ Compiling spiral_temp_test > v0.0.1 > │ > (C:\home\git\polyglot\apps\spiral\temp\test) > │ > │ Finished `release` profile > [optimized] target(s) in > │ > 6.92s > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### run release tests with output > enabled > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { cargo test --release -- --show-output } | Invoke-Block > │ > > │ > ── [ 20.04s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ Compiling fable_library_rust > v0.1.0 > │ > > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ > │ Compiling spiral_temp_test > v0.0.1 > │ > (C:\home\git\polyglot\apps\spiral\temp\test) > │ > │ Finished `release` profile > [optimized] target(s) in > │ > 19.84s > │ > │ Running unittests main.rs > │ > > (C:\home\git\polyglot\workspace\target\release\deps\spiral_temp_test-6f297c6a0c2 > │ > 32188.exe) > │ > │ > │ > │ running 3 tests > │ > │ test test_parse_number ... ok > │ > │ test prop_parse_format_idempotent ... ok > │ > │ test > │ > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok > │ > │ > │ > │ successes: > │ > │ > │ > │ ---- prop_parse_format_idempotent stdout > ---- > │ > │ input=StringLiteral("Ny=&d*GO.]?:~<C:/") > │ > │ > input=Identifier("gIoD1q01Q05K001Bk70uI") > │ > │ > input=Identifier("B677hJSTA4O2AUN9C6rbEuBzS") > │ > │ input=StringLiteral("B") > │ > │ input=Operator("*") > │ > │ input=Integer(-8449195902249034913) > │ > │ > input=StringLiteral("0??c%|g@/=T)d{%{S(l.|!c<=p$<") > │ > │ input=Identifier("R30M41t35Y5xI4WTRZ") > │ > │ input=Comment("?x{#'B~c.+yi'hk.k$.x_Y") > │ > │ input=Integer(8927001687869475973) > │ > │ input=Comment("Zd)IDE]&Ol") > │ > │ input=Integer(-6361035430007203850) > │ > │ > input=Comment("\\dD'.f`;<?x$[%k6}4%h::lAS.0f#6,:") > │ > │ input=Identifier("das6fVx73rRiu") > │ > │ input=Comment("") > │ > │ input=Comment("s;.") > │ > │ input=Integer(1272953567577202364) > │ > │ input=StringLiteral("{<LcA{VS") > │ > │ input=Integer(-8567082813421130946) > │ > │ input=Integer(-4209252176822134452) > │ > │ input=Comment("^<2&") > │ > │ input=Comment("r*ocp") > │ > │ input=Identifier("Je3o1sUcBYaw") > │ > │ input=Integer(-8575614549564961227) > │ > │ > input=Comment("^0d}Y^#<&yJ/yFS{,;Xbdb.**.f85") > │ > │ > input=Identifier("mVh5Gt2HdG37s0DSBJ9hzo8AYe") > │ > │ > input=Identifier("I601P7c4hxZ9ekioY4Bp5ub0zpgA") > │ > │ > input=Identifier("cH59IskQ4l3m37KUsB4038Z") > │ > │ input=Operator("(") > │ > │ input=Operator("/") > │ > │ input=Operator(")") > │ > │ input=Operator("/") > │ > │ input=Integer(8160930732828746629) > │ > │ input=Integer(-8157845724441391933) > │ > │ input=Operator("=") > │ > │ input=Identifier("v3Ldr4AA1M9") > │ > │ input=Integer(2754505283146991479) > │ > │ > input=Identifier("p3V4YJA30oGy30jrEVWG0EN65U") > │ > │ input=StringLiteral("cfy7o-r:%:S") > │ > │ > input=StringLiteral("=?&tPW+:x6KZl9kz)`88q{<r=im2d5S") > │ > │ input=Operator(")") > │ > │ input=Operator("*") > │ > │ input=Operator("+") > │ > │ input=Integer(-6668571096251520006) > │ > │ input=Identifier("HYq1cL1zR57Dx2g") > │ > │ input=Comment("Ha&\"=Xb#q/r.''\\L") > │ > │ input=StringLiteral("") > │ > │ > input=Comment("[I6}<M?%12pGR&0\\3G:Ie?\\WHvBBC\"{|") > │ > │ input=Identifier("A9iwe7RNS7") > │ > │ input=Operator("+") > │ > │ input=Identifier("vMvz102M1j6gE7") > │ > │ input=Operator("+") > │ > │ input=Integer(-7640900661105469898) > │ > │ input=Operator("=") > │ > │ > input=Comment("<\"=$MuR$27I?/?To=\\/\\o?WH") > │ > │ input=Integer(-6702537223375042707) > │ > │ input=Operator("+") > │ > │ input=StringLiteral("h?)X):dE(&") > │ > │ input=Operator(")") > │ > │ > input=Identifier("d9R8U1fZpjCHWPkZoskSdL") > │ > │ input=Operator("-") > │ > │ input=Identifier("F4ceo20iN") > │ > │ input=Operator("=") > │ > │ > input=Identifier("xO58V70xvUTy6byUAnZypNAuIODXCB") > │ > │ input=StringLiteral("&Y.I3=I5_?$[aH") > │ > │ input=Identifier("TMty74") > │ > │ input=Integer(-3037516225483000124) > │ > │ > input=StringLiteral("po|D8?%hnK$C*De:+&.1B<a$/") > │ > │ input=StringLiteral("") > │ > │ > input=Identifier("qJCZfJa5B764oMHgqFaGooT8") > │ > │ > input=StringLiteral("9^u_*Oa8*%s~x/,&`rHstf':") > │ > │ input=Identifier("o971ls7djaY") > │ > │ > input=Comment(";d\\?&s/F(J?d+?lWr.em{fI-#") > │ > │ > input=Comment("$yV)WFq,xu&yE@B`N-_V\">K%gL3(:") > │ > │ input=Operator("=") > │ > │ input=Operator("/") > │ > │ > input=Comment("]`0@:Y}\"eU.=;nu/,\"t:2j+h>5'NW") > │ > │ input=Operator(")") > │ > │ input=StringLiteral("~:2[&Q$n>&'1<#") > │ > │ input=Comment("(QMJl") > │ > │ > input=Identifier("rYcvzG7SP158L9AIW28m6qIv") > │ > │ input=Identifier("aJZDxx33puMzlCAI") > │ > │ input=StringLiteral("Rv?K:3A4g?zBa:0 > a{$$`") > │ > │ input=Integer(1504722658410824791) > │ > │ input=Comment("&`h.sM") > │ > │ input=Integer(419160036339632349) > │ > │ input=Identifier("X") > │ > │ input=Integer(1670938112186718455) > │ > │ input=Integer(6947425019536382326) > │ > │ input=Operator(")") > │ > │ input=Identifier("e9J") > │ > │ input=Comment("=*jchJ") > │ > │ input=Identifier("t3w") > │ > │ > input=Identifier("nq702iZ992Hy9qNxI9R6OOUO2Lf") > │ > │ input=Integer(-8373979453171920154) > │ > │ > input=Comment("/{MOc\\*sH.\"O{8h/<&{t3<XH*2&}1R\\") > │ > │ > input=Comment("d#i'o/?%fF3YL9D%<C*X_=k]STg@F\"\\/") > │ > │ input=Operator("+") > │ > │ > input=Identifier("uQ6nbFHoVI0AsGhKZkrhByOlyMAp9") > │ > │ input=Operator("=") > │ > │ input=Integer(-7354343837352100110) > │ > │ > input=Identifier("iki61Dsb2q9DaNm7eZobEDpQ") > │ > │ input=Operator("(") > │ > │ input=StringLiteral("A=]9=R`Oi(cj?*`E") > │ > │ input=Identifier("C98jZUD") > │ > │ input=Comment("$=5/KC") > │ > │ input=StringLiteral("+t/7*~") > │ > │ input=StringLiteral(",e%H;`^^`o") > │ > │ input=Operator("+") > │ > │ input=Comment("y=*Yx > {e<r@&Fvm)&n\\./,:a9hXCo") > │ > │ input=StringLiteral("faL?bLM7") > │ > │ > input=Comment(")E/=Qep`5$Nh'/,\",',\\&`%/=;HY{") > │ > │ input=Comment("'Tx`JY):n' :|=I<`") > │ > │ input=StringLiteral("hi::y|`$k95*<") > │ > │ input=Operator("+") > │ > │ input=Operator(")") > │ > │ > input=Identifier("v5VtlE3C9r6XkQq5E3fYydX6U3E92") > │ > │ > input=StringLiteral("=p}.I!&%N6rIJ8'&pr7%>j$&':@*p(`H") > │ > │ input=StringLiteral("<2`") > │ > │ > input=StringLiteral("4N$U!Y?=G*`{v`zB_Q><$k[#d") > │ > │ > input=Comment("*fb%$.&Q\\l!|:h3'Npv0)m6:q") > │ > │ input=Comment("`%@'s") > │ > │ input=StringLiteral("?/9G.~9zk!Eq") > │ > │ > input=Identifier("pJJLi3ht5QUhaAIiO7kaAYMm5J0la2") > │ > │ input=Operator("=") > │ > │ input=Comment("=") > │ > │ input=Comment("pzqf_\\<$):`${) > 6'^2i&cPe${") > │ > │ input=Integer(2320646179192753641) > │ > │ input=Integer(4863594639736775166) > │ > │ > input=StringLiteral("H0ms`Gb'5/G'w&vS?*") > │ > │ > input=Identifier("WJpfUrL7DMnPRTqWOXv4CC16WCUqF8O") > │ > │ input=Integer(2211392957417487608) > │ > │ input=Operator(")") > │ > │ input=Comment("<2p<") > │ > │ input=Integer(-6720225769668628786) > │ > │ input=Integer(5165638582813688722) > │ > │ input=Operator("=") > │ > │ input=Operator("(") > │ > │ input=StringLiteral("4v?q'?S") > │ > │ > input=Identifier("jXNfo6zf2HvcINAsUQx2e6") > │ > │ input=Operator("/") > │ > │ input=Identifier("HbK9Xv5Eg05BzCl51bh") > │ > │ input=Operator("(") > │ > │ input=Operator("-") > │ > │ input=StringLiteral("<L)<bt/") > │ > │ input=StringLiteral(":,sA=n86") > │ > │ input=Operator("-") > │ > │ input=StringLiteral("3$8Wy7? > =/j(<W/s:/3") > │ > │ > input=Comment("8&%|G/>/+'Td@>p'?yH3?-?u:/.") > │ > │ input=Operator("/") > │ > │ input=StringLiteral(":`'q ='`zEL=:W") > │ > │ input=Identifier("A6xt") > │ > │ input=Comment("\"\"{") > │ > │ input=Operator("+") > │ > │ input=Integer(-3979922694901682785) > │ > │ input=Comment("nF.CDc[<.1t=\\u59;:'>m") > │ > │ input=StringLiteral("&dk`Ea*Tc?Ps7`Us") > │ > │ > input=StringLiteral("{*4[&'AIL7RxZ*}i?^m=ZOd") > │ > │ input=Comment(",{q>2a\"\"E{*`P'.$E> > cB*") > │ > │ input=Identifier("t98xy9hLS4jftN16Ba6") > │ > │ input=StringLiteral("Xn';J<") > │ > │ input=Comment("VYk$QZm@}") > │ > │ input=StringLiteral("'l'`%AeB?D=l'' > vab9<JxR:^`") > │ > │ input=Operator("+") > │ > │ input=Integer(-1146089744027025594) > │ > │ input=Operator(")") > │ > │ input=Comment("<?sq>D{X#") > │ > │ input=Identifier("s061WhM3F39A5hKtN") > │ > │ > input=StringLiteral("@p&.=P:@N5`+$#Vv@B*/lx1&1J") > │ > │ > input=StringLiteral("UX_m*]n'K24{'i*6$C=*[N&p*") > │ > │ input=Integer(-3974918488315513242) > │ > │ input=Integer(2508235272214128265) > │ > │ input=Integer(2901501663451618014) > │ > │ input=StringLiteral("}* > Hp'@.%%O&E#N6ArM<GP9A2,[") > │ > │ > input=Identifier("E181vjHtFap446OWaVxWT3sfh7qR9GzmQ") > │ > │ input=Integer(-4274273258197782995) > │ > │ input=Operator("(") > │ > │ input=Identifier("xc5061Z8Dy7M") > │ > │ input=StringLiteral("fIY&49rd6NiG${JX") > │ > │ input=Operator("*") > │ > │ input=Operator("+") > │ > │ input=Integer(-2733577095079970940) > │ > │ input=StringLiteral("%an > N/}p`K/?)=Yh'ia/zDu") > │ > │ input=Operator("(") > │ > │ > input=StringLiteral(":u%<bk|tW^@-a'T2#??}1") > │ > │ > input=StringLiteral("1=k?CLw..NL;0[.pYG>%") > │ > │ input=Integer(646218266718093566) > │ > │ input=StringLiteral("E{':Y%.B{") > │ > │ input=StringLiteral("(*{C]!tF#U") > │ > │ input=StringLiteral("(3H{uQ&=MG/xt? > </R}7Rn<O'/") > │ > │ input=Identifier("Nu") > │ > │ input=Comment("0/x&V)_HR") > │ > │ input=Integer(1166624566034974855) > │ > │ input=Integer(-7794551463820380763) > │ > │ input=Comment("<&|~l:$J{") > │ > │ input=StringLiteral("BR{hx") > │ > │ > input=Identifier("R6T0xXV0hjDjEGRnxK59I8FbC3VbOcs") > │ > │ input=Integer(-7778030250389834495) > │ > │ input=Identifier("y94NoArIWpx4") > │ > │ input=Operator("/") > │ > │ input=Identifier("O8EC4x06BYYgSahtnCnN") > │ > │ input=Comment("T;#>k'g\\XB$\\-:B?4w$") > │ > │ input=Operator(")") > │ > │ input=StringLiteral("~} > /z41tA=s$9{na0:`2Q).8p`$*y") > │ > │ > input=StringLiteral("/x?C4}%X^82Q$JE2B.") > │ > │ input=Integer(-3772053820536194964) > │ > │ input=Identifier("Y548wSQ68FrW2GN") > │ > │ input=StringLiteral("%U*o=@!QI&G > %3q0&Js^P?") > │ > │ input=Integer(5468363009956950840) > │ > │ input=Identifier("x") > │ > │ > input=Identifier("Hk5hj1Ms5xajhXlRW13ZDyoRUm8H") > │ > │ input=Operator("=") > │ > │ input=Comment("`/<z&O\\<<P`% U}=d{") > │ > │ input=Comment("`i'_t{{") > │ > │ input=Identifier("nawnUBDi9eE92") > │ > │ input=Operator("*") > │ > │ input=Operator("(") > │ > │ > input=Identifier("AVI9TG8qzXJOzB41BuhFw2M4zxpN") > │ > │ > input=StringLiteral(":UZN{dc/c*Z/?q),?/0?WE=b") > │ > │ input=StringLiteral(",`C+ > eY{<F_{d<4AH.$?,&{L1*%") > │ > │ input=Operator("+") > │ > │ > input=Comment("pgAs\\N/<p^vZ=_D`P4n}LFo`eY$") > │ > │ input=StringLiteral("AH}") > │ > │ > input=StringLiteral("W<%$_XV7o#<9m`?sAk%L%f8)= |L&o/") > │ > │ > input=Comment(":fG$h'z^z.?hPnj|W-hV*\"Dv") > │ > │ input=Operator("(") > │ > │ input=StringLiteral("") > │ > │ input=Identifier("Fi1I94dkvRv2L") > │ > │ input=Operator("=") > │ > │ input=Comment("\\B{E]6{Q1H+K:") > │ > │ > input=StringLiteral("%<?K?{j0I}8]=3Nx]7y{*X7`{$.Dr/") > │ > │ input=Comment(":\"CpY7`m>Dm%\\#") > │ > │ input=Integer(5303578290708681384) > │ > │ > input=Identifier("x44v22AQzLR5P0KmbiOrAO5") > │ > │ input=StringLiteral("</|>7") > │ > │ input=Identifier("Mg6dGF2wX7QfyAnhAl") > │ > │ > input=Identifier("Bp55oERn5IWBz1YRngbAy") > │ > │ input=Comment("4%`???3\"<`%`%t>'Kk&A") > │ > │ > input=Comment("ZC>$1VQ\"-QGdl*syo\\%QNm-eVE#") > │ > │ input=Comment("<T=Qe8&") > │ > │ > input=Identifier("ofla6nVU5Ph57Ub280iPwBPZl") > │ > │ input=Comment("nky%yH{") > │ > │ input=StringLiteral("&`f$qM=}b{'jA") > │ > │ input=StringLiteral("0O/RX<T~") > │ > │ input=Operator("*") > │ > │ input=Comment("A*/|") > │ > │ input=Comment("*\"vH<$>s((Db)?KQ > 92$3'$`&=") > │ > │ input=Integer(-1051026963616469909) > │ > │ input=Operator("+") > │ > │ input=Comment("6H/bOV(<2xf<=+GQc75%Ik6 > -m/") > │ > │ input=StringLiteral("ynD7U[/E,+==Q") > │ > │ input=Operator("+") > │ > │ input=Identifier("M1") > │ > │ input=Operator("*") > │ > │ input=Integer(5170743577597378588) > │ > │ input=Comment("2:/vY`*,gq=MfM49#k1\\") > │ > │ > │ > │ > │ > │ successes: > │ > │ > │ > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged > │ > │ prop_parse_format_idempotent > │ > │ test_parse_number > │ > │ > │ > │ test result: ok. 3 passed; 0 failed; 0 > ignored; 0 measured; 0 > │ > filtered out; finished in 0.12s > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### execute the binary in release mode > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . > $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | > │ > Invoke-Block > │ > > │ > ── [ 14.56ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ app=test > │ > │ > │ 00:00:55 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 69677 } > │ 00:00:55 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:57 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb to html > │ 00:00:57 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:57 v #7 ! validate(nb) > │ 00:00:57 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:57 v #9 ! return _pygments_highlight( > │ 00:00:57 v #10 ! [NbConvertApp] Writing 346875 bytes to > c:\home\git\polyglot\apps\spiral\temp\test\build.dib.html > │ 00:00:57 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 874 } > │ 00:00:57 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 874 } > │ 00:00:57 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:00:58 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:58 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:58 d #16 spiral.run / dib / { exit_code = 0; > result_length = 70610 } > │ polyglot/scripts/core.ps1/GetFullPath / Path: ./build.py / > Location: C:\home\git\polyglot\apps\spiral\temp\blender / ResolvedLocation: > C:\home\git\polyglot\apps\spiral\temp\blender > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\apps\spiral\temp\blender\build.py > │ blender / Path: > C:\home\git\polyglot\apps\spiral\temp\blender\build.py > │ TBBmalloc: skip allocation functions replacement in > ucrtbase.dll: unknown prologue for function _aligned_free > │ Blender 4.3.2 (hash 32f5fdce0a0a built 2024-12-17 03:35:23) > │ Fra:1 Mem:10.21M (Peak 10.21M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Synchronizing object | Cube > │ Fra:1 Mem:10.29M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Initializing > │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Waiting for render to start > │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Loading render kernels (may take a few minutes > the first time) > │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Scene > │ Fra:1 Mem:10.13M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Shaders > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Procedurals > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Background > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Camera > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Meshes Flags > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects | Copying Transformations to > device > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects | Applying Static > Transformations > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Particle Systems > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Particle Systems | Copying Particles to > device > │ Fra:1 Mem:10.22M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Meshes > │ Fra:1 Mem:10.23M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Mesh | Computing attributes > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Mesh | Copying Attributes to device > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.00 | Mem:0.01M, > Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.00 | Mem:0.01M, > Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building BVH > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.04M, > Peak:0.04M | Scene, ViewLayer | Updating Scene BVH | Building BVH 0% > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Scene BVH | Copying BVH to device > │ Fra:1 Mem:10.24M (Peak 10.29M) | Time:00:00.01 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Mesh | Computing normals > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Mesh | Copying Mesh to device > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Objects Flags > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Primitive Offsets > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Images > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Camera Volume > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Lookup Tables > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Lights > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Lights | Computing tree > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Integrator > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Film > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.11M, > Peak:0.19M | Scene, ViewLayer | Updating Lookup Tables > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Baking > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Device | Writing constant memory > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Loading denoising kernels (may take a few > minutes the first time) > │ Fra:1 Mem:10.27M (Peak 10.29M) | Time:00:00.01 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Sample 0/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:00.15 | > Remaining:09:17.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 1/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:12.52 | > Remaining:10:27.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 80/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:13.29 | > Remaining:09:13.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 96/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:14.05 | > Remaining:08:19.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 112/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:14.79 | > Remaining:07:38.25 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 128/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:15.54 | > Remaining:07:06.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 144/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:16.29 | > Remaining:06:40.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 160/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:16.99 | > Remaining:06:18.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 176/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:17.58 | > Remaining:05:57.31 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 192/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:18.19 | > Remaining:05:39.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 208/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:18.74 | > Remaining:05:23.73 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 224/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:19.28 | > Remaining:05:09.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 240/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:19.78 | > Remaining:04:56.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 256/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:20.27 | > Remaining:04:44.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 272/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:20.75 | > Remaining:04:34.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 288/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.22 | > Remaining:04:24.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 304/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.67 | > Remaining:04:15.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 320/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.12 | > Remaining:04:07.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 336/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.55 | > Remaining:03:59.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 352/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.97 | > Remaining:03:52.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 368/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.38 | > Remaining:03:45.85 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 384/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.77 | > Remaining:03:39.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 400/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.17 | > Remaining:03:33.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 416/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.54 | > Remaining:03:28.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 432/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.99 | > Remaining:03:23.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 448/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.35 | > Remaining:03:18.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 464/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.71 | > Remaining:03:13.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 480/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.06 | > Remaining:03:09.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 496/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.40 | > Remaining:03:04.73 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 512/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.73 | > Remaining:03:00.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 528/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.06 | > Remaining:02:56.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 544/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.38 | > Remaining:02:52.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 560/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.69 | > Remaining:02:49.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 576/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.01 | > Remaining:02:45.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 592/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.32 | > Remaining:02:42.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 608/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.61 | > Remaining:02:39.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 624/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.91 | > Remaining:02:36.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 640/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.20 | > Remaining:02:33.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 656/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.49 | > Remaining:02:30.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 672/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.76 | > Remaining:02:27.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 688/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.04 | > Remaining:02:24.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 704/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.30 | > Remaining:02:22.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 720/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.56 | > Remaining:02:19.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 736/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.81 | > Remaining:02:16.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 752/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.07 | > Remaining:02:14.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 768/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.32 | > Remaining:02:12.25 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 784/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.56 | > Remaining:02:09.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 800/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.80 | > Remaining:02:07.76 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 816/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.04 | > Remaining:02:05.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 832/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.27 | > Remaining:02:03.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 848/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.49 | > Remaining:02:01.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 864/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.71 | > Remaining:01:59.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 880/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.94 | > Remaining:01:57.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 896/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.16 | > Remaining:01:55.72 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 912/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.37 | > Remaining:01:53.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 928/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.64 | > Remaining:01:52.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 944/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.86 | > Remaining:01:50.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 960/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.08 | > Remaining:01:48.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 976/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.29 | > Remaining:01:47.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 992/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.49 | > Remaining:01:45.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1008/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.68 | > Remaining:01:44.00 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1024/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.86 | > Remaining:01:42.41 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1040/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.06 | > Remaining:01:40.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1056/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.25 | > Remaining:01:39.39 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1072/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.43 | > Remaining:01:37.91 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1088/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.61 | > Remaining:01:36.47 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1104/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.78 | > Remaining:01:35.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1120/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.96 | > Remaining:01:33.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1136/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.14 | > Remaining:01:32.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1152/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.32 | > Remaining:01:31.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1168/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.49 | > Remaining:01:29.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1184/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.66 | > Remaining:01:28.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1200/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.85 | > Remaining:01:27.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1216/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.03 | > Remaining:01:26.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1232/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.20 | > Remaining:01:24.85 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1248/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.41 | > Remaining:01:23.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1264/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.57 | > Remaining:01:22.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1280/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.73 | > Remaining:01:21.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1296/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.89 | > Remaining:01:20.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1312/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.06 | > Remaining:01:19.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1328/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.23 | > Remaining:01:18.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1344/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.37 | > Remaining:01:17.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1360/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.52 | > Remaining:01:16.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1376/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.67 | > Remaining:01:15.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1392/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.81 | > Remaining:01:14.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1408/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.97 | > Remaining:01:13.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1424/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.11 | > Remaining:01:12.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1440/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.25 | > Remaining:01:11.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1456/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.40 | > Remaining:01:10.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1472/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.55 | > Remaining:01:09.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1488/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.68 | > Remaining:01:08.37 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1504/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.83 | > Remaining:01:07.47 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1520/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.97 | > Remaining:01:06.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1536/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.10 | > Remaining:01:05.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1552/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.23 | > Remaining:01:04.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1568/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.35 | > Remaining:01:03.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1584/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.50 | > Remaining:01:03.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1600/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.63 | > Remaining:01:02.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1616/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.76 | > Remaining:01:01.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1632/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.88 | > Remaining:01:00.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1648/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.00 | > Remaining:00:59.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1664/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.11 | > Remaining:00:59.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1680/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.22 | > Remaining:00:58.32 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1696/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.33 | > Remaining:00:57.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1712/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.44 | > Remaining:00:56.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1728/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.55 | > Remaining:00:56.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1744/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.66 | > Remaining:00:55.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1760/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.76 | > Remaining:00:54.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1776/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.86 | > Remaining:00:53.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1792/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.98 | > Remaining:00:53.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1808/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.08 | > Remaining:00:52.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1824/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.18 | > Remaining:00:51.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1840/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.28 | > Remaining:00:51.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1856/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.38 | > Remaining:00:50.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1872/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.48 | > Remaining:00:49.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1888/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.57 | > Remaining:00:48.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1904/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.67 | > Remaining:00:48.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1920/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.76 | > Remaining:00:47.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1936/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.85 | > Remaining:00:47.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1952/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.96 | > Remaining:00:46.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1968/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.05 | > Remaining:00:45.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1984/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.21 | > Remaining:00:45.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2000/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.30 | > Remaining:00:44.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2016/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.38 | > Remaining:00:44.05 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2032/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.47 | > Remaining:00:43.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2048/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.56 | > Remaining:00:42.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2064/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.64 | > Remaining:00:42.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2080/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.73 | > Remaining:00:41.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2096/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.81 | > Remaining:00:41.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2112/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.89 | > Remaining:00:40.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2128/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.98 | > Remaining:00:40.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2144/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.06 | > Remaining:00:39.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2160/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.14 | > Remaining:00:38.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2176/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.22 | > Remaining:00:38.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2192/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.31 | > Remaining:00:37.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2208/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.40 | > Remaining:00:37.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2224/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.48 | > Remaining:00:36.84 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2240/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.56 | > Remaining:00:36.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2256/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.64 | > Remaining:00:35.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2272/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.71 | > Remaining:00:35.32 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2288/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.79 | > Remaining:00:34.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2304/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.86 | > Remaining:00:34.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2320/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.94 | > Remaining:00:33.84 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2336/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.01 | > Remaining:00:33.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2352/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.08 | > Remaining:00:32.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2368/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.15 | > Remaining:00:32.41 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2384/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.22 | > Remaining:00:31.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2400/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.28 | > Remaining:00:31.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2416/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.35 | > Remaining:00:31.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2432/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.42 | > Remaining:00:30.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2448/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.48 | > Remaining:00:30.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2464/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.54 | > Remaining:00:29.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2480/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.61 | > Remaining:00:29.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2496/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.68 | > Remaining:00:28.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2512/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.74 | > Remaining:00:28.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2528/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.81 | > Remaining:00:27.93 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2544/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.87 | > Remaining:00:27.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2560/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.95 | > Remaining:00:27.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2576/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.02 | > Remaining:00:26.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2592/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.09 | > Remaining:00:26.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2608/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.16 | > Remaining:00:25.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2624/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.23 | > Remaining:00:25.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2640/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.30 | > Remaining:00:25.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2656/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.36 | > Remaining:00:24.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2672/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.42 | > Remaining:00:24.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2688/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.48 | > Remaining:00:23.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2704/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.54 | > Remaining:00:23.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2720/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.59 | > Remaining:00:23.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2736/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.65 | > Remaining:00:22.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2752/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.70 | > Remaining:00:22.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2768/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.76 | > Remaining:00:22.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2784/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.82 | > Remaining:00:21.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2800/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.87 | > Remaining:00:21.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2816/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.93 | > Remaining:00:20.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2832/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.99 | > Remaining:00:20.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2848/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.04 | > Remaining:00:20.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2864/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.10 | > Remaining:00:19.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2880/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.15 | > Remaining:00:19.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2896/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.20 | > Remaining:00:19.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2912/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.25 | > Remaining:00:18.84 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2928/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.30 | > Remaining:00:18.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2944/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.35 | > Remaining:00:18.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2960/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.40 | > Remaining:00:17.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2976/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.45 | > Remaining:00:17.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2992/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.50 | > Remaining:00:17.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3008/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.54 | > Remaining:00:16.84 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3024/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.59 | > Remaining:00:16.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3040/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.64 | > Remaining:00:16.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3056/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.68 | > Remaining:00:15.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3072/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.73 | > Remaining:00:15.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3088/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.77 | > Remaining:00:15.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3104/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.82 | > Remaining:00:14.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3120/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.86 | > Remaining:00:14.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3136/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.91 | > Remaining:00:14.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3152/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.96 | > Remaining:00:14.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3168/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.00 | > Remaining:00:13.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3184/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.04 | > Remaining:00:13.44 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3200/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.09 | > Remaining:00:13.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3216/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.13 | > Remaining:00:12.86 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3232/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.17 | > Remaining:00:12.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3248/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.21 | > Remaining:00:12.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3264/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.25 | > Remaining:00:12.00 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3280/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.29 | > Remaining:00:11.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3296/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.33 | > Remaining:00:11.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3312/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.37 | > Remaining:00:11.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3328/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.41 | > Remaining:00:10.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3344/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.45 | > Remaining:00:10.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3360/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.49 | > Remaining:00:10.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3376/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.53 | > Remaining:00:10.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3392/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.57 | > Remaining:00:09.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3408/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.61 | > Remaining:00:09.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3424/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.65 | > Remaining:00:09.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3440/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.68 | > Remaining:00:09.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3456/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.72 | > Remaining:00:08.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3472/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.76 | > Remaining:00:08.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3488/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.80 | > Remaining:00:08.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3504/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.84 | > Remaining:00:07.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3520/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.88 | > Remaining:00:07.73 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3536/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.93 | > Remaining:00:07.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3552/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.97 | > Remaining:00:07.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3568/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.01 | > Remaining:00:06.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3584/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.05 | > Remaining:00:06.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3600/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.09 | > Remaining:00:06.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3616/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.13 | > Remaining:00:06.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3632/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.17 | > Remaining:00:06.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3648/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.21 | > Remaining:00:05.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3664/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.24 | > Remaining:00:05.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3680/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.28 | > Remaining:00:05.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3696/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.32 | > Remaining:00:05.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3712/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.36 | > Remaining:00:04.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3728/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.39 | > Remaining:00:04.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3744/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.43 | > Remaining:00:04.41 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3760/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.46 | > Remaining:00:04.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3776/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.50 | > Remaining:00:03.96 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3792/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.54 | > Remaining:00:03.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3808/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.57 | > Remaining:00:03.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3824/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.61 | > Remaining:00:03.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3840/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.65 | > Remaining:00:03.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3856/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.69 | > Remaining:00:02.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3872/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.72 | > Remaining:00:02.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3888/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.76 | > Remaining:00:02.44 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3904/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.79 | > Remaining:00:02.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3920/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.82 | > Remaining:00:02.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3936/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.86 | > Remaining:00:01.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3952/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.90 | > Remaining:00:01.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3968/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.95 | > Remaining:00:01.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3984/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.98 | > Remaining:00:01.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4000/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.02 | > Remaining:00:00.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4016/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.06 | > Remaining:00:00.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4032/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.10 | > Remaining:00:00.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4048/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.14 | > Remaining:00:00.39 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4064/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.18 | > Remaining:00:00.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4080/4096 > │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:00:58.74 | > Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 4096/4096 > │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:00:58.74 | > Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Finished > │ Saved: 'C:\spiral_blender.png' > │ Time: 00:59.11 (Saving: 00:00.36) > │ > │ > │ Blender quit > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block > > ── [ 4.12s - stdout ] ────────────────────────────────────────────────────────── > │ bun install v1.2.4 (fd9a5ea6) > │ > │ Checked 242 installs across 234 packages (no changes) > [173.00ms] > │ polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / > Location: C:\home\git\polyglot\apps\spiral\vscode / ResolvedLocation: > C:\home\git\polyglot\apps\spiral\vscode > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: > C:\home\git\polyglot\apps\spiral\vscode / Path: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE > │ polyglot/scripts/core.ps1/GetFullPath / Path: > ../../../LICENSE / Location: C:\home\git\polyglot\apps\spiral\vscode / > ResolvedLocation: C:\home\git\polyglot\apps\spiral\vscode > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE / Target: > C:\home\git\polyglot\LICENSE / ResolvedTarget: C:\home\git\polyglot\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Symlink > already exists: C:\home\git\polyglot\apps\spiral\vscode\LICENSE -> > C:\home\git\polyglot\LICENSE > │ > │ out\src\extension.js 2.4kb > │ out\media\cellOutputScrollButtons.js 1.9kb > │ > │ ⚡ Done in 5ms > │ WARNING Neither a .vscodeignore file nor a "files" > property in package.json was found. To ensure only necessary files are included > in your extension, add a .vscodeignore file or specify the "files" property in > package.json. More info: https://aka.ms/vscode-vscodeignore > │ > │ INFO Files included in the VSIX: > │ spiral-vscode-0.0.1.vsix > │ ├─ [Content_Types].xml > │ ├─ extension.vsixmanifest > │ └─ extension/ > │ ├─ .gitignore [0.01 KB] > │ ├─ LICENSE.txt [33.71 KB] > │ ├─ build.ps1 [0.41 KB] > │ ├─ bun.lockb [86.98 KB] > │ ├─ compile.ps1 [0.48 KB] > │ ├─ package.json [1.55 KB] > │ ├─ media/ > │ │ └─ cellOutputScrollButtons.ts [1.8 KB] > │ ├─ node_modules/ > │ │ └─ vscode-uri/ > │ │ ├─ .lsifrc.json [0.12 KB] > │ │ ├─ LICENSE.md [1.04 KB] > │ │ ├─ README.md [2.42 KB] > │ │ ├─ package.json [1.06 KB] > │ │ ├─ .github/ > │ │ │ └─ workflows/ (1 file) [0.62 KB] > │ │ └─ lib/ > │ │ ├─ esm/ (2 files) [72.76 KB] > │ │ └─ umd/ (7 files) [92.51 KB] > │ ├─ out/ > │ │ ├─ media/ > │ │ │ └─ cellOutputScrollButtons.js [1.86 KB] > │ │ └─ src/ > │ │ └─ extension.js [2.44 KB] > │ └─ src/ > │ └─ extension.ts [1.38 KB] > │ > │ DONE Packaged: out\spiral-vscode-0.0.1.vsix (26 files, > 106.75 KB) > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/ipfs/build.ps1 } | Invoke-Block > > ── [ 619.42ms - stdout ] ─────────────────────────────────────────────────────── > │ bun install v1.2.4 (fd9a5ea6) > │ > │ Done! Checked 221 packages (no changes) [188.00ms] > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ./outdated.ps1 } | Invoke-Block > > ── [ 1.22m - stdout ] ────────────────────────────────────────────────────────── > │ Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ Resolving dependency graph... > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.1.25120.3, please > tell the package authors > │ Could not detect any platforms from 'net10.0' in > System.Management 10.0.0-preview.1.25080.5, please tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.1.25120.3, please > tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.1.25120.3, please > tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.1.25120.3, please tell the > package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.1.25120.3, please tell the > package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.1.25120.3, please tell > the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.1.25120.3, please > tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.Features 10.0.0-preview.1.25120.3, please tell the package > authors > │ Could not detect any platforms from 'net10.0' in > System.IO.Pipelines 10.0.0-preview.1.25080.5, please tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.1.25080.5, please tell > the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.Options 10.0.0-preview.1.25080.5, please tell the package > authors > │ Could not detect any platforms from 'net10.0' in > System.Net.ServerSentEvents 10.0.0-preview.1.25080.5, please tell the package > authors > │ Could not detect any platforms from 'net10.0' in > System.Text.Json 10.0.0-preview.1.25080.5, please tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.DependencyInjection 10.0.0-preview.1.25080.5, please tell > the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.Logging 10.0.0-preview.1.25080.5, please tell the package > authors > │ Could not detect any platforms from 'net10.0' in > System.Threading.Channels 10.0.0-preview.1.25080.5, please tell the package > authors > │ Could not detect any platforms from 'net10.0' in > System.CodeDom 10.0.0-preview.1.25080.5, please tell the package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.1.25080.5, > please tell the package authors > │ Could not detect any platforms from 'net10.0' in > System.Diagnostics.DiagnosticSource 10.0.0-preview.1.25080.5, please tell the > package authors > │ Could not detect any platforms from 'net10.0' in > Microsoft.Extensions.Primitives 10.0.0-preview.1.25080.5, please tell the > package authors > │ Could not detect any platforms from 'net10.0' in > System.Text.Encodings.Web 10.0.0-preview.1.25080.5, please tell the package > authors > │ Outdated packages found: > │ Group: Main > │ * Argu 6.2.4 -> 6.2.5 > │ * Expecto 11.0.0-alpha6 -> 11.0.0-alpha8 > │ * Expecto.FsCheck 11.0.0-alpha6 -> 11.0.0-alpha8-fscheck2 > │ * Fable.Core 4.3 -> 4.5.0 > │ * FsCheck 3.0.1 -> 2.16.6 > │ * FSharp.Core 9.0.201 -> 9.0.300-beta.25079.4 > │ * Microsoft.AspNetCore.App.Ref 9.0.2 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.SignalR.Client 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.SignalR.Common 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.Bcl.AsyncInterfaces 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.DependencyInjection 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.DependencyInjection.Abstractions > 9.0.2 -> 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.Features 7.0 -> > 10.0.0-preview.1.25120.3 > │ * Microsoft.Extensions.Logging 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.Logging.Abstractions 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.Options 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * Microsoft.Extensions.Primitives 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ * System.CodeDom 9.0.2 -> 10.0.0-preview.1.25080.5 > │ * System.IO.Pipelines 9.0.2 -> 10.0.0-preview.1.25080.5 > │ * System.Management 7.0 -> 10.0.0-preview.1.25080.5 > │ * System.Threading.Channels 9.0.2 -> > 10.0.0-preview.1.25080.5 > │ Total time taken: 38 seconds > │ Paket omitted 24 warnings. You can see them in verbose mode. > │ > │ CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml > │ chat_contract_tests > │ ================ > │ Name Project Compat Latest Kind > Platform > │ ---- ------- ------ ------ ---- > -------- > │ equivalent 1.0.1 Removed Removed Normal --- > │ hashbrown 0.15.2 0.12.3 0.12.3 Normal --- > │ indexmap 2.7.0 1.9.3 1.9.3 Normal --- > │ near-sandbox-utils 0.9.0 0.8.0 0.8.0 Normal --- > │ > │ CheckToml / toml: > C:\home\git\polyglot\apps\chat\contract\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckToml / toml: > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckJson / json: C:/home/git/polyglot > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ npm-check-updates ~17.1.14 → ~17.1.15 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: C:/home/git/polyglot/apps/ipfs > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\apps\ipfs\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ npm-check-updates ~17.1.14 → ~17.1.15 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: > C:/home/git/polyglot/apps/spiral/temp/extension > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking > C:\home\git\polyglot\apps\spiral\temp\extension\package.json > │ > │ > │ @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-05 > │ @types/chrome ~0.0.268 → ~0.0.308 > │ npm-check-updates ~17.1.14 → ~17.1.15 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\apps\spiral\vscode\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ @types/vscode ~1.96 → ~1.98 > │ npm-check-updates ~17.1.14 → ~17.1.15 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: > C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin > │ $ npm-check-updates --target greatest > │ Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS > Code Plugin\package.json > │ > │ > │ @microsoft/signalr 8.0.0 → 8.0.7 > │ @types/node ~22.10 → ~22.13 > │ @types/vscode ~1.95 → ~1.98 > │ esbuild ~0.24 → ~0.25 > │ npm-check-updates ~17.1.14 → ~17.1.15 > │ portfinder ^1.0.32 → ^1.0.33 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ 00:42:32 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2267710 } 00:42:32 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/scripts/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/scripts/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:42:34 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/scripts/build.dib.ipynb to html 00:42:34 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:42:34 v #7 ! validate(nb) 00:42:34 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:42:34 v #9 ! return _pygments_highlight( 00:42:41 v #10 ! [NbConvertApp] Writing 2327352 bytes to c:\home\git\polyglot\scripts\build.dib.html 00:42:41 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 847 } 00:42:41 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 847 } 00:42:41 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:42:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:42:42 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:42:42 d #16 spiral.run / dib / { exit_code = 0; result_length = 2268616 } dice/lib/build.ps1 / ScriptDir: C:\home\git\dice\lib / ResolvedScriptDir: C:\home\git\dice\lib 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib/dice.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/dice.dib", "--output-path", "c:/home/git/dice/lib/dice.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/dice.dib" --output-path "c:/home/git/dice/lib/dice.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # dice (Dice) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixth_power_sequence > > ── spiral ────────────────────────────────────────────────────────────────────── > inl sixth_power_sequence () = > stream.iterate_map ((*) 6) (fun x => if x <= 0 then None else Some x) 1 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > sixth_power_sequence () > |> stream.take_while (fun _ i => i <= 7i32) > |> stream.to_list > |> _assert_eq [[ 1u64; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 1.18s - stdout ] ────────────────────────────────────────────────────────── > │ __assert_eq / actual: UH0_1 > │ (1UL, > │ UH0_1 > │ (6UL, > │ UH0_1 > │ (36UL, > │ UH0_1 > │ (216UL, > │ UH0_1 > │ (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 > (279936UL, UH0_0)))))))) / expected: UH0_1 > │ (1UL, > │ UH0_1 > │ (6UL, > │ UH0_1 > │ (36UL, > │ UH0_1 > │ (216UL, > │ UH0_1 > │ (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 > (279936UL, UH0_0)))))))) > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulate_dice_rolls > > ── spiral ────────────────────────────────────────────────────────────────────── > inl accumulate_dice_rolls > (rolls : list u8) > (power : i8) > acc > = > inl rec body acc power rolls = > match rolls with > | _ when power < 0 => > inl result = acc + 1 > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc result } > Some (result, rolls) > | [[]] => None > | roll :: rest when roll > 1 => > inl coeff = sixth_power_sequence () |> stream.item power > inl value = conv (roll - 1) * coeff > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc roll value } > loop (acc + value) (power - 1) rest > | roll :: rest => > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc roll } > loop acc (power - 1) rest > and inl loop acc power rolls = > if var_is rolls |> not > then body acc power rolls > else > inl acc = dyn acc > join body acc power rolls > loop acc power rolls > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 0 1000i32 > |> _assert_eq (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 1.43s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; > acc = 1000; roll = 6; value = 5 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1; > acc = 1005; result = 1006 } > │ __assert_eq / actual: US6_0 (1006, UH0_1 (5uy, UH0_1 (4uy, > UH0_1 (3uy, UH0_1 (2uy, UH0_0))))) / expected: US6_0 (1006, UH0_1 (5uy, UH0_1 > (4uy, UH0_1 (3uy, UH0_1 (2uy, UH0_0))))) > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 1 1000i32 > |> _assert_eq (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 985.26ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 1; > acc = 1000; roll = 6; value = 30 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 0; > acc = 1030; roll = 5; value = 4 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = -1; > acc = 1034; result = 1035 } > │ __assert_eq / actual: US6_0 (1035, UH0_1 (4uy, UH0_1 (3uy, > UH0_1 (2uy, UH0_0)))) / expected: US6_0 (1035, UH0_1 (4uy, UH0_1 (3uy, UH0_1 > (2uy, UH0_0)))) > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 2 1000i32 > |> _assert_eq (Some (1208, [[ 3; 2 ]])) > > ── [ 1.00s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 2; > acc = 1000; roll = 6; value = 180 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 1; > acc = 1180; roll = 5; value = 24 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 0; > acc = 1204; roll = 4; value = 3 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = -1; > acc = 1207; result = 1208 } > │ __assert_eq / actual: US6_0 (1208, UH0_1 (3uy, UH0_1 (2uy, > UH0_0))) / expected: US6_0 (1208, UH0_1 (3uy, UH0_1 (2uy, UH0_0))) > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_within_bounds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_within_bounds max rolls = > inl power = listm.length rolls - 1 > match accumulate_dice_rolls rolls power 0 with > | Some (result, _) when result >= 1 && result <= max => Some result > | _ => None > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 1; 5; 4; 4; 5 ]] > |> _assert_eq (Some 995) > > ── [ 1.08s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 994; result = 995 } > │ __assert_eq / actual: US6_0 995 / expected: US6_0 995 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 2; 2; 6; 4; 5 ]] > |> _assert_eq (Some 1715) > > ── [ 936.06ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 1714; result = 1715 } > │ __assert_eq / actual: US6_0 1715 / expected: US6_0 1715 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 4; 1; 1; 2; 3 ]] > |> _assert_eq None > > ── [ 797.80ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 4; value = 3888 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 3888; roll = 1 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 3888; roll = 1 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 3888; roll = 2; value = 6 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 3894; roll = 3; value = 2 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 3896; result = 3897 } > │ __assert_eq / actual: US6_1 / expected: US6_1 > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculate_dice_count > > ── spiral ────────────────────────────────────────────────────────────────────── > inl calculate_dice_count max = > inl rec body n p = > inl return () = > trace Debug > fun () => "dice.calculate_dice_count" > fun () => { max p n } > n > if p < max then > inl p' = p * 6 > if p' > p > then loop (n + 1) p' > else return () > else return () > and inl loop n p = > if var_is max |> not > then body n p > else > inl n = dyn n > inl p = dyn p > join body n p > if max = 1 > then 1 > else loop 0 1 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > calculate_dice_count 36i32 > |> _assert_eq 2i32 > > ── [ 698.46ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 36; p > = 36; n = 2 } > │ __assert_eq / actual: 2 / expected: 2 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > calculate_dice_count 7777i32 > |> _assert_eq 6i32 > > ── [ 628.22ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 7777; > p = 46656; n = 6 } > │ __assert_eq / actual: 6 / expected: 6 > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_dice > > ── spiral ────────────────────────────────────────────────────────────────────── > let roll_dice () : u8 = > random' 1 7 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotate_number > > ── spiral ────────────────────────────────────────────────────────────────────── > inl rotate_number forall t {number}. (max : i64) (n : t) : t = > (conv n - 1 + max) % max + 1 |> conv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotate_numbers > > ── spiral ────────────────────────────────────────────────────────────────────── > inl rotate_numbers max items = > items |> stream.map (rotate_number max) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > listm'.init_series -1 14 1i32 > |> stream.from_list > |> rotate_numbers 6 > |> stream.to_list > |> _assert_eq [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 266.82ms - stdout ] ─────────────────────────────────────────────────────── > │ __assert_eq / actual: UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, UH0_1 (6, UH0_1 (1, > UH0_1 (2, UH0_0)))))))))))))))) / expected: UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, UH0_1 (6, UH0_1 (1, > UH0_1 (2, UH0_0)))))))))))))))) > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## create_sequential_roller > > ── spiral ────────────────────────────────────────────────────────────────────── > inl create_sequential_roller list = > inl s = list |> listm.rev |> listm.append list |> stream.from_list |> > stream.memoize > inl current_index = mut 0i64 > inl acc = mut 1 > inl len = mut -1 > inl last_item = mut None > let rec loop () = > fun () => > inl current_index = *current_index > inl acc = *acc > inl len = *len > inl last_item = *last_item |> optionm'.box > trace Debug > fun () => "dice.create_sequential_roller / roll" > fun () => { current_index acc len last_item = last_item |> > sm'.format_debug } > |> fun x => x () > match s () |> stream.try_item *current_index with > | Some item => > current_index <- *current_index + 1 > last_item <- Some item > item > | None => > trace Debug (fun () => "dice.create_sequential_roller / roll / > None") id > if *len = -1 > then len <- *current_index > acc <- > if *acc >= *len > then 1 > else *acc + 1 > current_index <- *acc - 1 > last_item <- None > loop () > loop > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 1i32; 2; 3; 4 ]] > > am.init 50i32 (ignore >> sequential_roll) > |> _assert_eq (a ;[[ 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4; 3; 2; > 1; 4; 4; 3; 2; 1; > 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2 ]] : a > i32 i32) > > ── [ 852.59ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 1 } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 2 } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 3 } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 4 } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = -1; last_item = Some 4 } > │ 00:00:00 d #7 dice.create_sequential_roller / roll / { > current_index = 6; acc = 1; len = -1; last_item = Some 3 } > │ 00:00:00 d #8 dice.create_sequential_roller / roll / { > current_index = 7; acc = 1; len = -1; last_item = Some 2 } > │ 00:00:00 d #9 dice.create_sequential_roller / roll / { > current_index = 8; acc = 1; len = -1; last_item = Some 1 } > │ 00:00:00 d #10 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #11 dice.create_sequential_roller / roll / { > current_index = 1; acc = 2; len = 8; last_item = None } > │ 00:00:00 d #12 dice.create_sequential_roller / roll / { > current_index = 2; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #13 dice.create_sequential_roller / roll / { > current_index = 3; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #14 dice.create_sequential_roller / roll / { > current_index = 4; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #15 dice.create_sequential_roller / roll / { > current_index = 5; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #16 dice.create_sequential_roller / roll / { > current_index = 6; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #17 dice.create_sequential_roller / roll / { > current_index = 7; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #18 dice.create_sequential_roller / roll / { > current_index = 8; acc = 2; len = 8; last_item = Some 1 } > │ 00:00:00 d #19 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #20 dice.create_sequential_roller / roll / { > current_index = 2; acc = 3; len = 8; last_item = None } > │ 00:00:00 d #21 dice.create_sequential_roller / roll / { > current_index = 3; acc = 3; len = 8; last_item = Some 3 } > │ 00:00:00 d #22 dice.create_sequential_roller / roll / { > current_index = 4; acc = 3; len = 8; last_item = Some 4 } > │ 00:00:00 d #23 dice.create_sequential_roller / roll / { > current_index = 5; acc = 3; len = 8; last_item = Some 4 } > │ 00:00:00 d #24 dice.create_sequential_roller / roll / { > current_index = 6; acc = 3; len = 8; last_item = Some 3 } > │ 00:00:00 d #25 dice.create_sequential_roller / roll / { > current_index = 7; acc = 3; len = 8; last_item = Some 2 } > │ 00:00:00 d #26 dice.create_sequential_roller / roll / { > current_index = 8; acc = 3; len = 8; last_item = Some 1 } > │ 00:00:00 d #27 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #28 dice.create_sequential_roller / roll / { > current_index = 3; acc = 4; len = 8; last_item = None } > │ 00:00:00 d #29 dice.create_sequential_roller / roll / { > current_index = 4; acc = 4; len = 8; last_item = Some 4 } > │ 00:00:00 d #30 dice.create_sequential_roller / roll / { > current_index = 5; acc = 4; len = 8; last_item = Some 4 } > │ 00:00:00 d #31 dice.create_sequential_roller / roll / { > current_index = 6; acc = 4; len = 8; last_item = Some 3 } > │ 00:00:00 d #32 dice.create_sequential_roller / roll / { > current_index = 7; acc = 4; len = 8; last_item = Some 2 } > │ 00:00:00 d #33 dice.create_sequential_roller / roll / { > current_index = 8; acc = 4; len = 8; last_item = Some 1 } > │ 00:00:00 d #34 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #35 dice.create_sequential_roller / roll / { > current_index = 4; acc = 5; len = 8; last_item = None } > │ 00:00:00 d #36 dice.create_sequential_roller / roll / { > current_index = 5; acc = 5; len = 8; last_item = Some 4 } > │ 00:00:00 d #37 dice.create_sequential_roller / roll / { > current_index = 6; acc = 5; len = 8; last_item = Some 3 } > │ 00:00:00 d #38 dice.create_sequential_roller / roll / { > current_index = 7; acc = 5; len = 8; last_item = Some 2 } > │ 00:00:00 d #39 dice.create_sequential_roller / roll / { > current_index = 8; acc = 5; len = 8; last_item = Some 1 } > │ 00:00:00 d #40 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #41 dice.create_sequential_roller / roll / { > current_index = 5; acc = 6; len = 8; last_item = None } > │ 00:00:00 d #42 dice.create_sequential_roller / roll / { > current_index = 6; acc = 6; len = 8; last_item = Some 3 } > │ 00:00:00 d #43 dice.create_sequential_roller / roll / { > current_index = 7; acc = 6; len = 8; last_item = Some 2 } > │ 00:00:00 d #44 dice.create_sequential_roller / roll / { > current_index = 8; acc = 6; len = 8; last_item = Some 1 } > │ 00:00:00 d #45 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #46 dice.create_sequential_roller / roll / { > current_index = 6; acc = 7; len = 8; last_item = None } > │ 00:00:00 d #47 dice.create_sequential_roller / roll / { > current_index = 7; acc = 7; len = 8; last_item = Some 2 } > │ 00:00:00 d #48 dice.create_sequential_roller / roll / { > current_index = 8; acc = 7; len = 8; last_item = Some 1 } > │ 00:00:00 d #49 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #50 dice.create_sequential_roller / roll / { > current_index = 7; acc = 8; len = 8; last_item = None } > │ 00:00:00 d #51 dice.create_sequential_roller / roll / { > current_index = 8; acc = 8; len = 8; last_item = Some 1 } > │ 00:00:00 d #52 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #53 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = 8; last_item = None } > │ 00:00:00 d #54 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = 8; last_item = Some 1 } > │ 00:00:00 d #55 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = 8; last_item = Some 2 } > │ 00:00:00 d #56 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = 8; last_item = Some 3 } > │ 00:00:00 d #57 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = 8; last_item = Some 4 } > │ 00:00:00 d #58 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = 8; last_item = Some 4 } > │ 00:00:00 d #59 dice.create_sequential_roller / roll / { > current_index = 6; acc = 1; len = 8; last_item = Some 3 } > │ 00:00:00 d #60 dice.create_sequential_roller / roll / { > current_index = 7; acc = 1; len = 8; last_item = Some 2 } > │ 00:00:00 d #61 dice.create_sequential_roller / roll / { > current_index = 8; acc = 1; len = 8; last_item = Some 1 } > │ 00:00:00 d #62 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #63 dice.create_sequential_roller / roll / { > current_index = 1; acc = 2; len = 8; last_item = None } > │ 00:00:00 d #64 dice.create_sequential_roller / roll / { > current_index = 2; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #65 dice.create_sequential_roller / roll / { > current_index = 3; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #66 dice.create_sequential_roller / roll / { > current_index = 4; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #67 dice.create_sequential_roller / roll / { > current_index = 5; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #68 dice.create_sequential_roller / roll / { > current_index = 6; acc = 2; len = 8; last_item = Some 3 } > │ __assert_eq / actual: [|1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; > 3; 2; 1; 3; 4; 4; 3; 2; 1; 4; 4; 3; 2; 1; > │ 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; > 4; 4; 3; 2|] / expected: [|1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4; > 3; 2; 1; 4; 4; 3; 2; 1; > │ 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; > 4; 4; 3; 2|] > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_progressively > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_progressively roll reroll max = > inl power = (calculate_dice_count max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else accumulate_dice_rolls rolls power 0 |> function > | Some (result, _) when result <= max => result > | _ when reroll => loop (listm.init power (fun _ => roll ())) power > | _ => loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_progressively roll_dice false 1 > |> _assert_eq 1i32 > > ── [ 791.83ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; > acc = 0; roll = 1 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1; > acc = 0; result = 1 } > │ __assert_eq / actual: 1 / expected: 1 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 1 ]] > > roll_progressively sequential_roll false 2000i32 > |> _assert_eq 995 > > ── [ 1.18s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; > p = 7776; n = 5 } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = > -1; acc = 994; result = 995 } > │ __assert_eq / actual: 995 / expected: 995 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 2 ]] > > roll_progressively sequential_roll false 2000i32 > |> _assert_eq 1678 > > ── [ 994.88ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; > p = 7776; n = 5 } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 5; value = 864 } > │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; > acc = 2160; roll = 4; value = 108 } > │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1; > acc = 2268; roll = 4; value = 18 } > │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0; > acc = 2286; roll = 5; value = 4 } > │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = > -1; acc = 2290; result = 2291 } > │ 00:00:00 d #13 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = -1; last_item = Some 2uy } > │ 00:00:00 d #14 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #15 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #16 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 5; value = 144 } > │ 00:00:00 d #17 dice.accumulate_dice_rolls / { power = 1; > acc = 1656; roll = 4; value = 18 } > │ 00:00:00 d #18 dice.accumulate_dice_rolls / { power = 0; > acc = 1674; roll = 4; value = 3 } > │ 00:00:00 d #19 dice.accumulate_dice_rolls / { power = > -1; acc = 1677; result = 1678 } > │ __assert_eq / actual: 1678 / expected: 1678 > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 10000 1 > |> listm.map (fun _ => roll_progressively roll_dice false 10i32) > |> listm'.group_by id > |> listm.map (fun (k, v) => k, (listm.length v : i32)) > |> listm'.box > |> listm'.to_array' > |> fun ar => > $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * > int32)' > > ── [ 1.28s - return value ] ──────────────────────────────────────────────────── > │ > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td > >0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(1, > 308)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>308</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(2, > 787)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>787</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(3, > 1309)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1309</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(4, > 1375)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1375</pre></div></td></tr></tbody>...thead><tr></tr>< > /thead><tbody><tr><td>Item1</td><td><div > class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>663</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(9, > 1355)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1355</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(10, > 1351)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1351</pre></div></td></tr></tbody></table></div></det > ails></td></tr></tbody></table><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 10000 1 > |> listm.map (fun _ => roll_progressively roll_dice true 10i32) > |> listm'.group_by id > |> listm.map (fun (k, v) => k, (listm.length v : i32)) > |> listm'.box > |> listm'.to_array' > |> fun ar => > $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * > int32)' > > ── [ 1.09s - return value ] ──────────────────────────────────────────────────── > │ > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td > >0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(1, > 938)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>938</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(2, > 1095)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1095</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(3, > 1002)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1002</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(4, > 990)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>990</pre></div></td></tr></tbody>...head><tr></tr></t > head><tbody><tr><td>Item1</td><td><div > class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1002</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(9, > 1028)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1028</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(10, > 1065)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1065</pre></div></td></tr></tbody></table></div></det > ails></td></tr></tbody></table><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > //// timeout=180000 > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 100 1 > |> listm.iter fun n => > listm'.init_series 0i32 1 1 > |> listm.iter fun reroll => > join dyn listm'.init_series 1i32 3500 1 > |> listm.map fun _ => roll_progressively roll_dice (reroll = 1) n > |> listm'.group_by id > |> listm.length > |> __assert_eq Silent n > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── spiral ────────────────────────────────────────────────────────────────────── > inl main (_args : array_base string) = > inl result = roll_progressively roll_dice true (limit.max : i64) > trace Debug > fun () => "dice.main" > fun () => { result } > 0i32 > > inl main () = > inl rotate_numbers' : i64 -> stream.stream u8 -> stream.stream u8 = > rotate_numbers > > inl create_sequential_roller' : > list u8 > -> (() -> u8) > = > create_sequential_roller > > inl roll_progressively' : > (() -> u8) > -> bool > -> u64 > -> u64 > = > roll_progressively > > inl roll_within_bounds' : > u64 > -> list u8 > -> optionm'.option' u64 > = > fun a b => > roll_within_bounds a b > |> optionm'.box > > $'let rotate_numbers x = !rotate_numbers' x' : () > $'let create_sequential_roller x = !create_sequential_roller' x' : () > $'let roll_progressively x = !roll_progressively' x' : () > $'let roll_within_bounds x = !roll_within_bounds' x' : () > $'let main args = !main args' : () 00:00:47 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42759 } 00:00:47 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/lib/dice.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/lib/dice.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:48 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/lib/dice.dib.ipynb to html 00:00:48 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:48 v #7 ! validate(nb) 00:00:48 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:48 v #9 ! return _pygments_highlight( 00:00:49 v #10 ! [NbConvertApp] Writing 368895 bytes to c:\home\git\dice\lib\dice.dib.html 00:00:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 828 } 00:00:49 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 828 } 00:00:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 43646 } 00:00:00 d #1 writeDibCode / output: Spi / path: dice.dib 00:00:00 d #2 parseDibCode / output: Spi / file: dice.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice / hash: / code.Length: 194895 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice\dice.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 223 ms). 00:00:13 v #7 > dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\linux-x64\dice.dll 00:00:15 v #8 > dice -> C:\home\git\dice\lib\dist\ 00:00:15 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 402; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:15 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:16 v #11 > Determining projects to restore... 00:00:16 v #12 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:16 v #13 > The last full restore is still up to date. Nothing left to do. 00:00:16 v #14 > Total time taken: 0 milliseconds 00:00:17 v #15 > Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 218 ms). 00:00:29 v #16 > dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\win-x64\dice.dll 00:00:31 v #17 > dice -> C:\home\git\dice\lib\dist\ 00:00:31 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 400; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @do-wa Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 145ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9803ms .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice.rs polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: ts / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0 Thanks to the contributor! @kirill-gerasimenko Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 151ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9303ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/ts/dice.ts / Target: dice.ts polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: py / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) Thanks to the contributor! @BillHally Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 142ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9346ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/py/dice.py / Target: dice.py polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @iyegoroff Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 160ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9128ms .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice_contract.rs Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling dice_lib v0.0.1 (C:\home\git\dice\lib) Finished `release` profile [optimized] target(s) in 12.36s Running `C:\home\git\dice\target\release\dice.exe` 00:00:00 d #1 dice.calculate_dice_count / { max = 9223372036854775807; p = 4738381338321616896; n = 24 } 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 23; acc = 0; roll = 6; value = 3948651115268014080 } 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 22; acc = 3948651115268014080; roll = 6; value = 658108519211335680 } 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 21; acc = 4606759634479349760; roll = 4; value = 65810851921133568 } 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 20; acc = 4672570486400483328; roll = 3; value = 7312316880125952 } 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 19; acc = 4679882803280609280; roll = 1 } 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 18; acc = 4679882803280609280; roll = 1 } 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 17; acc = 4679882803280609280; roll = 1 } 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 16; acc = 4679882803280609280; roll = 5; value = 11284439629824 } 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 15; acc = 4679894087720239104; roll = 6; value = 2350924922880 } 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 14; acc = 4679896438645161984; roll = 1 } 00:00:00 d #12 dice.accumulate_dice_rolls / { power = 13; acc = 4679896438645161984; roll = 2; value = 13060694016 } 00:00:00 d #13 dice.accumulate_dice_rolls / { power = 12; acc = 4679896451705856000; roll = 4; value = 6530347008 } 00:00:00 d #14 dice.accumulate_dice_rolls / { power = 11; acc = 4679896458236203008; roll = 5; value = 1451188224 } 00:00:00 d #15 dice.accumulate_dice_rolls / { power = 10; acc = 4679896459687391232; roll = 3; value = 120932352 } 00:00:00 d #16 dice.accumulate_dice_rolls / { power = 9; acc = 4679896459808323584; roll = 6; value = 50388480 } 00:00:00 d #17 dice.accumulate_dice_rolls / { power = 8; acc = 4679896459858712064; roll = 1 } 00:00:00 d #18 dice.accumulate_dice_rolls / { power = 7; acc = 4679896459858712064; roll = 6; value = 1399680 } 00:00:00 d #19 dice.accumulate_dice_rolls / { power = 6; acc = 4679896459860111744; roll = 1 } 00:00:00 d #20 dice.accumulate_dice_rolls / { power = 5; acc = 4679896459860111744; roll = 6; value = 38880 } 00:00:00 d #21 dice.accumulate_dice_rolls / { power = 4; acc = 4679896459860150624; roll = 3; value = 2592 } 00:00:00 d #22 dice.accumulate_dice_rolls / { power = 3; acc = 4679896459860153216; roll = 1 } 00:00:00 d #23 dice.accumulate_dice_rolls / { power = 2; acc = 4679896459860153216; roll = 3; value = 72 } 00:00:00 d #24 dice.accumulate_dice_rolls / { power = 1; acc = 4679896459860153288; roll = 3; value = 12 } 00:00:00 d #25 dice.accumulate_dice_rolls / { power = 0; acc = 4679896459860153300; roll = 4; value = 3 } 00:00:00 d #26 dice.accumulate_dice_rolls / { power = -1; acc = 4679896459860153303; result = 4679896459860153304 } 00:00:00 d #27 dice.main / { result = 4679896459860153304 } dice/lib/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice / $projectName: dice / $env:CI:'' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\contract/dice_contract.dib", "--retries", "1"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/contract/dice_contract.dib", "--output-path", "c:/home/git/dice/contract/dice_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/contract/dice_contract.dib" --output-path "c:/home/git/dice/contract/dice_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # dice_contract > > ── spiral ────────────────────────────────────────────────────────────────────── > //// package=../dice > > open rust > open rust.rust_operators > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## dice_contract > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### state > > ── spiral ────────────────────────────────────────────────────────────────────── > type state = > { > version : u32 > seeds : near.vector u8 > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > () > > ── [ 29.72s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209380155211 } > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 } > │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:14 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209380155211 } > │ 00:00:14 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:14 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 } > │ 00:00:14 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:20 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000957; total_gas_burnt = 1432562717711 } > │ 00:00:20 i #15 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:20 i #16 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901298295871; tokens_burnt = 90129829587100000000 } > │ 00:00:20 i #17 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > trace Verbose (fun () => "") id > > ── [ 13.00s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001034; total_gas_burnt = 1547823517808 } > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; > gas_burnt = 1016559095968; tokens_burnt = 101655909596800000000 } > │ 00:00:07 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### new > > ── spiral ────────────────────────────────────────────────────────────────────── > inl new () : state = > { > version = 2 > seeds = "seeds" |> sm'.byte_slice |> near.new_vector > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl state = new () > trace Verbose (fun () => "dice_contract") fun () => { state = state |> > sm'.format_debug } > trace Verbose (fun () => "") id > > ── [ 13.13s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 dice_contract / { state = (2, Vector { > len: 0, prefix: [115, 101, 101, 100, 115] }) } > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001181; total_gas_burnt = 1768058482467 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000826; tokens_burnt_usd = +0.000826; > gas_burnt = 1236794060627; tokens_burnt = 123679406062700000000 } > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### max_seeds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl max_seeds () : unativeint = > 100i32 |> convert > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### contribute_seed > > ── spiral ────────────────────────────────────────────────────────────────────── > inl contribute_seed (seeds : rust.ref (rust.mut' (near.vector u8))) (seed : > am'.vec u8) : () = > seeds |> near.vector_extend seed > > inl seed_excess_len = (seeds |> rust.len |> fun x => x : u32 |> i32) - > (max_seeds () |> i32) > > if seed_excess_len > 0 then > inl seed_excess : am'.vec u8 = > !\\(seed_excess_len, $'"!seeds.drain(0..$0 as > u32).collect::<Vec<_>>()"') > trace Debug > fun () => "dice_contract.contribute_seed" > fun () => { seed_excess_len seed_excess = seed_excess |> > sm'.format_debug } > trace Debug (fun () => "") (join id) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl replicate n = > let rec loop i acc = > if i > n > then acc > else > inl i' = i % 10 > inl i' = > if i' = 0 > then i % limit.max > else i' > loop (i + 1) (i' :: acc) > loop 1 [[]] > |> listm.rev > |> listm'.box > |> listm'.to_array' > > inl max_seeds : u32 = max_seeds () |> convert > inl seeds = "" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut > > conv max_seeds * 1.2f64 > |> replicate > |> am'.map_base u8 > |> am'.to_vec > |> contribute_seed seeds > > seeds > |> rust.len > |> _assert_eq max_seeds > > ── [ 42.11s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice_contract.contribute_seed / { > seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, > 5, 6, 7, 8, 9, 20] } > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.007368; total_gas_burnt = 11029879511109 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; > gas_burnt = 10721797651769; tokens_burnt = 1072179765176900000000 } > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice_contract.contribute_seed / { > seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, > 5, 6, 7, 8, 9, 20] } > │ > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.007368; total_gas_burnt = 11029879511109 } > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; > gas_burn....007368; total_gas_burnt = 11029879511109 } > │ 00:00:30 i #27 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:30 i #28 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; > gas_burnt = 10721797651769; tokens_burnt = 1072179765176900000000 } > │ 00:00:30 w #29 spiral_wasm.run / Error error / { retry > = 5; error = "{ receipt_outcomes_len = 1; retry = 5; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice_contract.contribute_seed / { > seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, > 5, 6, 7, 8, 9, 20] } > │ > │ 00:00:36 i #32 near_workspaces.print_usd / { retry = 6; > total_gas_burnt_usd = +0.007517; total_gas_burnt = 11253062073609 } > │ 00:00:36 i #33 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:36 i #34 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007162; tokens_burnt_usd = +0.007162; > gas_burnt = 10721797651769; tokens_burnt = 1072179765176900000000 } > │ 00:00:36 i #35 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### generate_random_number > > ── spiral ────────────────────────────────────────────────────────────────────── > inl generate_random_number > (seeds : rust.ref (rust.mut' (near.vector u8))) > (key : sm'.std_string) > (proof : sm'.std_string) > (max : u64) > : u64 > = > inl seed = near.random_seed () > inl epoch_height = near.epoch_height () > inl block_height = near.block_height () > inl block_timestamp = near.block_timestamp () > inl account_balance = near.account_balance () > inl signer_account_id = near.signer_account_id () > inl predecessor_account_id = near.predecessor_account_id () > inl entropy = > ;[[ > seed > seeds |> rust.reref |> near.vector_to_vec > epoch_height |> am'.to_le_bytes |> am'.to_vec' > block_height |> am'.to_le_bytes |> am'.to_vec' > block_timestamp |> am'.to_le_bytes |> am'.to_vec' > account_balance |> near.as_yoctonear |> am'.to_le_bytes |> > am'.to_vec' > signer_account_id |> am'.as_bytes |> am'.to_vec'' > predecessor_account_id |> am'.as_bytes |> am'.to_vec'' > proof |> sm'.into_bytes > key |> sm'.into_bytes > ]] > |> am'.to_vec > |> rust.concat > inl hash_u8 = entropy |> near.keccak512 > hash_u8 |> contribute_seed seeds > inl rolls_list = > hash_u8 > |> am'.from_vec_base > |> am'.to_list_base' > |> listm'.unbox > |> stream.from_list > |> lib.dice.rotate_numbers 6 > |> stream.to_list > trace Debug > fun () => "dice_contract.generate_random_number" > fun () => { > max > key > proof > block_timestamp > block_height > epoch_height > account_balance = account_balance |> sm'.format_debug > signer_account_id = signer_account_id |> sm'.to_string' > predecessor_account_id = predecessor_account_id |> sm'.to_string' > seed = seed |> sm'.format_debug > seeds = seeds |> sm'.format_debug > entropy_len = entropy |> am'.vec_len > entropy = entropy |> sm'.format_debug > hash_u8 = hash_u8 |> sm'.format_debug > rolls = rolls_list |> listm'.box |> listm'.to_array' |> am'.to_vec > |> sm'.format_debug > } > inl sequential_roll = rolls_list |> lib.dice.create_sequential_roller > inl result = lib.dice.roll_progressively sequential_roll true max > trace Debug (fun () => "") (join id) > result > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -cd near-token > > 2000 > |> generate_random_number > ("" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut) > ("" |> sm'.to_std_string) > ("" |> sm'.to_std_string) > |> _assert_gt 0 > > ── [ 20.73s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #2 dice_contract.generate_random_number / { > max = 2000; key = ""; proof = ""; block_timestamp = 1741212624507790405; > block_height = 10; epoch_height = 1; account_balance = NearToken { inner: > 99817379736552383587979200 }; signer_account_id = > "dev-20250305221023-13013859456072"; predecessor_account_id = > "dev-20250305221023-13013859456072"; seed = [204, 78, 195, 62, 87, 134, 216, 4, > 78, 55, 75, 132, 119, 197, 21, 13, 156, 110, 217, 252, 9, 189, 254, 235, 120, > 203, 86, 52, 166, 129, 117, 23]; seeds = Vector { len: 64, prefix: [] }; > entropy_len = 138; entropy = [204, 78, 195, 62, 87, 134, 216, 4, 78, 55, 75, > 132, 119, 197, 21, 13, 156, 110, 217, 252, 9, 189, 254, 235, 120, 203, 86, 52, > 166, 129, 117, 23, 1, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 69, 100, 54, > 26, 168, 7, 42, 24, 192, 143, 230, 30, 215, 18, 132, 255, 38, 145, 82, 0, 0, 0, > 0, 0, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 48, 53, 50, 50, 49, 48, 50, 51, > 45, 49, 51, 48, 49, 51, 56, 53, 57, 52, 53, 54, 48, 55, 50, 100, 101, 118, 45, > 50, 48, 50, 53, 48, 51, 48, 53, 50, 50, 49, 48, 50, 51, 45, 49, 51, 48, 49, 51, > 56, 53, 57, 52, 53, 54, 48, 55, 50]; hash_u8 = [142, 116, 56, 129, 64, 193, 183, > 253, 50, 32, 26, 141, 201, 69, 204, 78, 192, 63, 226, 11, 33, 252, 107, 222, > 214, 194, 234, 172, 253, 121, 81, 233, 12, 233, 136, 107, 83, 53, 218, 60, 89, > 80, 81, 44, 45, 172, 89, 69, 142, 39, 248, 135, 217, 9, 161, 104, 42, 4, 21, 18, > 41, 99, 123, 123]; rolls = [4, 2, 2, 3, 4, 1, 3, 1, 2, 2, 2, 3, 3, > 3,...rent_index = 38; acc = 1; len = -1; last_item = Some(1) } > │ 00:00:00 d #85 dice.create_sequential_roller / roll / { > current_index = 39; acc = 1; len = -1; last_item = Some(4) } > │ 00:00:00 d #86 dice.accumulate_dice_rolls / { power = > 4; acc = 0; roll = 1 } > │ 00:00:00 d #87 dice.accumulate_dice_rolls / { power = > 3; acc = 0; roll = 6; value = 1080 } > │ 00:00:00 d #88 dice.accumulate_dice_rolls / { power = > 2; acc = 1080; roll = 4; value = 108 } > │ 00:00:00 d #89 dice.accumulate_dice_rolls / { power = > 1; acc = 1188; roll = 1 } > │ 00:00:00 d #90 dice.accumulate_dice_rolls / { power = > 0; acc = 1188; roll = 4; value = 3 } > │ 00:00:00 d #91 dice.accumulate_dice_rolls / { power = > -1; acc = 1191; result = 1192 } > │ > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.162299; total_gas_burnt = 242963156982296 } > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.161945; tokens_burnt_usd = +0.161945; > gas_burnt = 242431892560456; tokens_burnt = 24243189256045600000000 } > │ 00:00:13 i #11 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### roll_within_bounds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_within_bounds (max : u64) (rolls : am'.vec u8) : optionm'.option' u64 = > inl result = > rolls > |> am'.from_vec_base > |> am'.to_list_base' > |> listm'.unbox > |> lib.dice.roll_within_bounds max > |> optionm'.box > trace Debug > fun () => "dice_contract.roll_within_bounds" > fun () => { max rolls = rolls |> sm'.format_debug; result = result |> > sm'.format_debug } > trace Debug (fun () => "") (join id) > result > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl rolls = ;[[ 1; 5; 4; 4; 5 ]] |> am'.to_vec > > rolls > |> roll_within_bounds 2000 > |> _assert_eq' (optionm'.some' 995) > > ── [ 11.85s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 994; result = 995 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) } > │ > │ 00:00:05 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.002723; total_gas_burnt = 4077010460504 } > │ 00:00:05 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:05 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002369; tokens_burnt_usd = +0.002369; > gas_burnt = 3545746038664; tokens_burnt = 354574603866400000000 } > │ 00:00:05 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl rolls = ;[[ 2; 2; 6; 4; 5 ]] |> am'.to_vec > > rolls > |> roll_within_bounds 2000 > |> _assert_eq' (optionm'.some' 1715) > > ── [ 20.16s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 1714; result = 1715 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) } > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.002641; total_gas_burnt = 3953244234365 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002435; tokens_burnt_usd = +0.002435; > gas_burnt = 3645162375025; tokens_burnt = 364516237502500000000 } > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 1714; result = 1715 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) } > │ > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.002790; total_gas_burnt = 4176426796865 } > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002435; tokens_burnt_usd = +0.002435; > gas_burnt = 3645162375025; tokens_burnt = 364516237502500000000 } > │ 00:00:13 i #11 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main () = > !\($'"} //"') : () > > !\($'"#[[derive( //"') : () > !\($'" near_sdk::PanicOnDefault, //"') : () > !\($'" borsh::BorshDeserialize, //"') : () > !\($'" borsh::BorshSerialize, //"') : () > !\($'")]] //"') : () > > !\($'"pub struct OldState { //"') : () > !\($'" version: u32, //"') : () > !\($'" seeds: near_sdk::store::vec::Vector<u8>, //"') : () > !\($'"} //"') : () > > !\($'"#[[near_sdk::near_bindgen]] //"') : () > > !\($'"#[[derive( //"') : () > !\($'" near_sdk::PanicOnDefault, //"') : () > !\($'" borsh::BorshDeserialize, //"') : () > !\($'" borsh::BorshSerialize, //"') : () > !\($'")]] //"') : () > > !\($'"pub struct State ( //"') : () > > !\($'"/*"') : () > (null () : rust.type_emit state) |> ignore > !\($'"*/ )"') : () > > !\($'"impl From<OldState> for State { //"') : () > !\($'" fn from(old_state: OldState) -> Self { //"') : () > !\($'" Self((old_state.version + 1, old_state.seeds)) //"') : () > !\($'" } //"') : () > !\($'"} //"') : () > > inl new_ () = > !\($'"#[[init]] //"') : () > !\($'"pub fn new() -> Self { // 1"') : () > > (!\($'"true; /*"') : bool) |> ignore > > (null () : rust.type_emit ()) |> ignore > > (!\($'"true; */"') : bool) |> ignore > > inl result = new () > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : () > > !\($'"} // 2."') : () > > !\($'"} // 1."') : () > > 2 > > inl contribute_seed () = > !\($'"pub fn contribute_seed(&mut self, seed: Vec<u8>) { //"') : () > inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut > self.0.1"') > inl seed : am'.vec u8 = !\($'$"seed"') > > seed |> contribute_seed seeds > > !\($'"} //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 3 > > inl contribute_seed_borsh () = > !\($'"pub fn contribute_seed_borsh(&mut self, #[[serializer(borsh)]] > seed: Vec<u8>) { //"') : () > !\($'" self.contribute_seed(seed) //"') : () > !\($'"} //"') : () > > 1 > > inl generate_random_number () = > !\($'"pub fn generate_random_number(&mut self, key: String, proof: > String, max: u64) -> u64 { //"') : () > > inl key : sm'.std_string = !\($'$"key"') > inl proof : sm'.std_string = !\($'$"proof"') > inl max : u64 = !\($'$"max"') > > inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut > self.0.1"') > > inl result = generate_random_number seeds key proof max > > !\($'"!result //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 3 > > inl roll_within_bounds () = > !\($'"pub fn roll_within_bounds(&self, max: u64, rolls: Vec<u8>) -> > Option<u64> { //"') : () > inl max : u64 = !\($'$"max"') > inl rolls : am'.vec u8 = !\($'$"rolls"') > inl result = roll_within_bounds max rolls > > !\\(result, $'"$0 //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 2 > > inl roll_within_bounds_borsh () = > !\($'"#[[result_serializer(borsh)]] //"') : () > !\($'"pub fn roll_within_bounds_borsh( //"') : () > !\($'" &self, //"') : () > !\($'" #[[serializer(borsh)]] max: u64, //"') : () > !\($'" #[[serializer(borsh)]] rolls: Vec<u8>, //"') : () > !\($'") -> Option<u64> { //"') : () > !\($'" self.roll_within_bounds(max, rolls) //"') : () > !\($'"} //"') : () > > 1 > > > inl fns = > [[ > new_ > contribute_seed > contribute_seed_borsh > generate_random_number > roll_within_bounds > roll_within_bounds_borsh > ]] > > inl rec loop acc fns i = > match fns with > | [[]] => acc > | x :: xs => > !\($'"#[[near_sdk::near_bindgen]] //"') : () > !\($'"impl State { //"') : () > inl n = x () > !\($'"} /* c"') : () > inl rec loop' i' = > if i' <> 1 // <= n > then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > else > (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > loop' (i' + 1) > loop' 1u8 > loop (acc + n) xs (i + 1) > inl n = loop 0u8 fns 1u8 > > > // !\($'"/* a"') : () > > // !\($'"} // b"') : () > > !\($'"fn _main() //"') : () > !\($'" //"') : () > > inl rec loop' i' = > if i' <= n > then > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore > loop' (i' + 1) > else > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore > loop' 1u8 > > inl main () = > $'!main |> ignore' : () 00:02:40 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 29738 } 00:02:40 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/contract/dice_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/contract/dice_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:42 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/contract/dice_contract.dib.ipynb to html 00:02:42 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:42 v #7 ! validate(nb) 00:02:42 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:42 v #9 ! return _pygments_highlight( 00:02:43 v #10 ! [NbConvertApp] Writing 370059 bytes to c:\home\git\dice\contract\dice_contract.dib.html 00:02:43 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:02:43 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:02:43 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:43 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:43 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:43 d #16 spiral.run / dib / { exit_code = 0; result_length = 30653 } 00:00:00 d #1 writeDibCode / output: Spi / path: dice_contract.dib 00:00:00 d #2 parseDibCode / output: Spi / file: dice_contract.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_contract / hash: / code.Length: 162946 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 223 ms). 00:00:14 v #7 > dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\linux-x64\dice_contract.dll 00:00:16 v #8 > dice_contract -> C:\home\git\dice\contract\dist\ 00:00:16 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 461; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:16 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:16 v #11 > Determining projects to restore... 00:00:17 v #12 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:17 v #13 > The last full restore is still up to date. Nothing left to do. 00:00:17 v #14 > Total time taken: 0 milliseconds 00:00:17 v #15 > Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 222 ms). 00:00:31 v #16 > dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\win-x64\dice_contract.dll 00:00:32 v #17 > dice_contract -> C:\home\git\dice\contract\dist\ 00:00:32 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 459; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_contract polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_contract / ProjectName: dice_contract / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @selketjah Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_contract\dice_contract.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 154ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 8540ms .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\dice_contract\dice_contract.fs(4153,6): (4153,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/contract/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_contract/target/rs/dice_contract.rs Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling dice_contract_lib v0.0.1 (C:\home\git\dice\lib\contract) Compiling dice_contract v0.0.1 (C:\home\git\dice\contract) Finished `release` profile [optimized] target(s) in 17.71s dice/contract/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice_contract / $projectName: dice_contract / $env:CI:'' Finished `release` profile [optimized] target(s) in 26.65s Running `/mnt/c/home/git/dice/target/release/dice_contract_tests` new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1575303866155, }, transaction: ExecutionOutcome { transaction_hash: BqW81QUizm8npj3J3MuHJ3386QDzKYqNPXyfDEaKTW4Z, block_hash: 3jKTYCyjVyF4c1S78gqH4kXW1H5LNTnMEC6fMoo7BKaJ, logs: [], receipt_ids: [ EJ22GdYSJ1NHtdJa59c28BwtrkAkAavHZDfXcupP3ZcZ, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessReceiptId(EJ22GdYSJ1NHtdJa59c28BwtrkAkAavHZDfXcupP3ZcZ), }, receipts: [ ExecutionOutcome { transaction_hash: EJ22GdYSJ1NHtdJa59c28BwtrkAkAavHZDfXcupP3ZcZ, block_hash: 3jKTYCyjVyF4c1S78gqH4kXW1H5LNTnMEC6fMoo7BKaJ, logs: [], receipt_ids: [ 9oVPkLXQq7iBNBwQ2ntZxzGgmXscQWVNbuVkaaYr73Bg, ], gas_burnt: NearGas { inner: 1267237658353, }, tokens_burnt: NearToken { inner: 126723765835300000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.00105230298259154 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0008465147557798039 outcome_tokens_burnt_usd: 0.0 roll_within_bounds(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4338618404537, }, transaction: ExecutionOutcome { transaction_hash: DQduo3npSftBtroDq9HYvL7xVjYxvG7opJ83nF9e1qpR, block_hash: GPWvjgF1wqkxWvM6UTsYUUjgXkxz7DNjFTQ15TwfZxgo, logs: [], receipt_ids: [ 4PkMDfMxTjwCXNR2G3R8L6oNaBu5NrdFmA6PMQ86pE88, ], gas_burnt: NearGas { inner: 308171296700, }, tokens_burnt: NearToken { inner: 30817129670000000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessReceiptId(4PkMDfMxTjwCXNR2G3R8L6oNaBu5NrdFmA6PMQ86pE88), }, receipts: [ ExecutionOutcome { transaction_hash: 4PkMDfMxTjwCXNR2G3R8L6oNaBu5NrdFmA6PMQ86pE88, block_hash: GPWvjgF1wqkxWvM6UTsYUUjgXkxz7DNjFTQ15TwfZxgo, logs: [ "22:13:15 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 1 }\n22:13:15 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 0; roll = 5; value = 864 }\n22:13:15 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 864; roll = 4; value = 108 }\n22:13:15 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 972; roll = 4; value = 18 }\n22:13:15 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 990; roll = 5; value = 4 }\n22:13:15 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 994; result = 995 }\n22:13:15 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) }", ], receipt_ids: [ 3psxstvroBzhzjuVvYLcRteLR4uQhqsXnS4T6tt1Lede, ], gas_burnt: NearGas { inner: 3807264545337, }, tokens_burnt: NearToken { inner: 380726454533700000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessValue('995'), }, ExecutionOutcome { transaction_hash: 3psxstvroBzhzjuVvYLcRteLR4uQhqsXnS4T6tt1Lede, block_hash: H5bBCjz9Tus7iCXmJqGQwtk9uAKsAfhYczrmNF9iLBk, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessValue(''), }, ], status: SuccessValue('995'), } total_gas_burnt_usd: 0.0028981970942307156 outcome (success: true): outcome_gas_burnt_usd: 0.00020585842619559998 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002543252716285116 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 roll_within_bounds_borsh(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4213741491866, }, transaction: ExecutionOutcome { transaction_hash: 71nKR9ESMuY1NTxBe8FFb2VcunuUJ5hVMP7BqRwkhzNU, block_hash: F2hTHSf915mnaNb15BGewe4isKfCGWaXmds6Gh31DwLg, logs: [], receipt_ids: [ AkA81DqjCcB5B7SUxcFbdWGPSVxR51kxauZddqF8p4Hq, ], gas_burnt: NearGas { inner: 308151173294, }, tokens_burnt: NearToken { inner: 30815117329400000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessReceiptId(AkA81DqjCcB5B7SUxcFbdWGPSVxR51kxauZddqF8p4Hq), }, receipts: [ ExecutionOutcome { transaction_hash: AkA81DqjCcB5B7SUxcFbdWGPSVxR51kxauZddqF8p4Hq, block_hash: F2hTHSf915mnaNb15BGewe4isKfCGWaXmds6Gh31DwLg, logs: [ "22:13:15 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 2; value = 1296 }\n22:13:15 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 1296; roll = 2; value = 216 }\n22:13:15 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 1512; roll = 6; value = 180 }\n22:13:15 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 1692; roll = 4; value = 18 }\n22:13:15 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 1710; roll = 5; value = 4 }\n22:13:15 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 1714; result = 1715 }\n22:13:15 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) }", ], receipt_ids: [ 9oDZi6NeJ81CY1qxbWRvSGUAKjHya8wN2eVKLC1Q1URU, ], gas_burnt: NearGas { inner: 3905590318572, }, tokens_burnt: NearToken { inner: 390559031857200000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessValue(AbMGAAAAAAAA), }, ], status: SuccessValue(AbMGAAAAAAAA), } total_gas_burnt_usd: 0.0028147793165664878 outcome (success: true): outcome_gas_burnt_usd: 0.000205844983760392 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002608934332806096 outcome_tokens_burnt_usd: 0.0 n: Some( Some( 1715, ), ) generate_random_number(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 24955548817070, }, transaction: ExecutionOutcome { transaction_hash: 2svEdrq8n3PJ8HRCq28GMrD6CnNDv1eqjKcACtQQcy1g, block_hash: 49pVesTau5grKzcaMVBiCGAy7YCAY6ENMYn1pzFciiJQ, logs: [], receipt_ids: [ 5viLcGATUU3qYwdoy9tnNtdbkca2MTH5aovvgKR137JF, ], gas_burnt: NearGas { inner: 308198127908, }, tokens_burnt: NearToken { inner: 30819812790800000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessReceiptId(5viLcGATUU3qYwdoy9tnNtdbkca2MTH5aovvgKR137JF), }, receipts: [ ExecutionOutcome { transaction_hash: 5viLcGATUU3qYwdoy9tnNtdbkca2MTH5aovvgKR137JF, block_hash: 49pVesTau5grKzcaMVBiCGAy7YCAY6ENMYn1pzFciiJQ, logs: [ "22:13:16 \u{1b}[94md\u{1b}[39m #2 dice_contract.generate_random_number / { max = 2000; key = \"key\"; proof = \"proof\"; block_timestamp = 1741212796295316812; block_height = 18; epoch_height = 1; account_balance = NearToken { inner: 99816578677365004473471040 }; signer_account_id = \"dev-20250305221313-74734062556178\"; predecessor_account_id = \"dev-20250305221313-74734062556178\"; seed = [200, 178, 68, 40, 225, 31, 246, 89, 63, 98, 197, 64, 110, 108, 177, 81, 164, 156, 242, 35, 228, 181, 44, 251, 125, 129, 252, 220, 113, 98, 122, 64]; seeds = Vector { len: 64, prefix: [115, 101, 101, 100, 115] }; entropy_len = 146; entropy = [200, 178, 68, 40, 225, 31, 246, 89, 63, 98, 197, 64, 110, 108, 177, 81, 164, 156, 242, 35, 228, 181, 44, 251, 125, 129, 252, 220, 113, 98, 122, 64, 1, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 76, 5, 140, 25, 208, 7, 42, 24, 64, 16, 180, 203, 28, 36, 150, 146, 251, 144, 82, 0, 0, 0, 0, 0, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 48, 53, 50, 50, 49, 51, 49, 51, 45, 55, 52, 55, 51, 52, 48, 54, 50, 53, 53, 54, 49, 55, 56, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 48, 53, 50, 50, 49, 51, 49, 51, 45, 55, 52, 55, 51, 52, 48, 54, 50, 53, 53, 54, 49, 55, 56, 112, 114, 111, 111, 102, 107, 101, 121]; hash_u8 = [210, 16, 73, 201, 176, 231, 56, 47, 235, 4, 211, 97, 95, 207, 130, 149, 149, 200, 196, 59, 47, 65, 234, 67, 195, 117, 9, 211, 251, 242, 143, 111, 180, 76, 1, 242, 142, 221, 34, 81, 25, 14, 34, 220, 209, 130, 102, 120, 236, 53, 105, 50, 84, 118, 167, 107, 16, 28, 164, 6, 70, 74, 8, 155]; rolls = [6, 4, 1, 3, 2, 3, 2, 5, 1, 4, 1, 1, 5, 3, 4, 5, 5, 2, 4, 5, 5, 5, 6, 1, 3, 3, 3, 1, 5, 2, 5, 3, 6, 4, 1, 2, 4, 5, 4, 3, 1, 2, 4, 4, 5, 4, 6, 6, 2, 5, 3, 2, 6, 4, 5, 5, 4, 4, 2, 6, 4, 2, 2, 5] }\n22:13:16 \u{1b}[94md\u{1b}[39m #3 dice.calculate_dice_count / { max = 2000; p = 7776; n = 5 }\n22:13:16 \u{1b}[94md\u{1b}[39m #4 dice.create_sequential_roller / roll / { current_index = 0; acc = 1; len = -1; last_item = None }\n22:13:16 \u{1b}[94md\u{1b}[39m #5 dice.create_sequential_roller / roll / { current_index = 1; acc = 1; len = -1; last_item = Some(6) }\n22:13:16 \u{1b}[94md\u{1b}[39m #6 dice.create_sequential_roller / roll / { current_index = 2; acc = 1; len = -1; last_item = Some(4) }\n22:13:16 \u{1b}[94md\u{1b}[39m #7 dice.create_sequential_roller / roll / { current_index = 3; acc = 1; len = -1; last_item = Some(1) }\n22:13:16 \u{1b}[94md\u{1b}[39m #8 dice.create_sequential_roller / roll / { current_index = 4; acc = 1; len = -1; last_item = Some(3) }\n22:13:16 \u{1b}[94md\u{1b}[39m #9 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 2; value = 1296 }\n22:13:16 \u{1b}[94md\u{1b}[39m #10 dice.accumulate_dice_rolls / { power = 3; acc = 1296; roll = 3; value = 432 }\n22:13:16 \u{1b}[94md\u{1b}[39m #11 dice.accumulate_dice_rolls / { power = 2; acc = 1728; roll = 1 }\n22:13:16 \u{1b}[94md\u{1b}[39m #12 dice.accumulate_dice_rolls / { power = 1; acc = 1728; roll = 4; value = 18 }\n22:13:16 \u{1b}[94md\u{1b}[39m #13 dice.accumulate_dice_rolls / { power = 0; acc = 1746; roll = 6; value = 5 }\n22:13:16 \u{1b}[94md\u{1b}[39m #14 dice.accumulate_dice_rolls / { power = -1; acc = 1751; result = 1752 }", ], receipt_ids: [ 27afZGyqekniVDxj1xB9jQRKJHwUv1iq2Gr54QXPwCvg, ], gas_burnt: NearGas { inner: 24647350689162, }, tokens_burnt: NearToken { inner: 2464735068916200000000, }, executor_id: AccountId( "dev-20250305221313-74734062556178", ), status: SuccessValue('1752'), }, ], status: SuccessValue('1752'), } total_gas_burnt_usd: 0.01667030660980276 outcome (success: true): outcome_gas_burnt_usd: 0.00020587634944254398 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.016464430260360215 outcome_tokens_burnt_usd: 0.0 n: 1752 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib\fsharp/dice_fsharp.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib", "--output-path", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/fsharp/dice_fsharp.dib" --output-path "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DiceFSharp (Dice) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Polyglot > open Lib > #endif > > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixthPowerSequence > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sixthPowerSequence () = > 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > sixthPowerSequence () > |> Seq.take 8 > |> Seq.toList > |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 67.51ms - stdout ] ──────────────────────────────────────────────────────── > │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulateDiceRolls > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec accumulateDiceRolls log rolls power acc = > match rolls with > | _ when power < 0 -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc}") > Some (acc + 1, rolls) > | [[]] -> None > | roll :: rest when roll > 1 -> > let coeff = sixthPowerSequence () |> Seq.item power > let value = (roll - 1) * coeff > log |> Option.iter ((|>) $"accumulateDiceRolls / \ > power: {power} / acc: {acc} / roll: {roll} / value: {value}" > ) > accumulateDiceRolls log rest (power - 1) (acc + value) > | roll :: rest -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc} / roll: {roll}") > accumulateDiceRolls log rest (power - 1) acc > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 > |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 35.72ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: > 5 > │ accumulateDiceRolls / power: -1 / acc: 1005 > │ Some (1006, [5; 4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 > |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 25.24ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: > 30 > │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1034 > │ Some (1035, [4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 > |> _assertEqual (Some (1208, [[ 3; 2 ]])) > > ── [ 24.24ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: > 24 > │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: > 3 > │ accumulateDiceRolls / power: -1 / acc: 1207 > │ Some (1208, [3; 2]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollWithinBounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollWithinBounds log max rolls = > let power = List.length rolls - 1 > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result >= 1 && result <= max -> Some result > | _ -> None > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] > |> _assertEqual (Some 995) > > ── [ 23.28ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ Some 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] > |> _assertEqual (Some 1715) > > ── [ 22.43ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: > 216 > │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1714 > │ Some 1715 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] > |> _assertEqual None > > ── [ 22.83ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: > 3888 > │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: > 6 > │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: > 2 > │ accumulateDiceRolls / power: -1 / acc: 3896 > │ <null> > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculateDiceCount > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline calculateDiceCount log max = > let rec loop n p = > if p < max > then loop (n + 1) (p * 6) > else > log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} > / p: {p}") > n > if max = 1 > then 1 > else loop 0 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 36 > |> _assertEqual 2 > > ── [ 24.81ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 36 / n: 2 / p: 36 > │ 2 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 7777 > |> _assertEqual 6 > > ── [ 22.85ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 > │ 6 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollDice > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if FABLE_COMPILER_RUST > let rollDice () : int = > #if !WASM && !CONTRACT > Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut > rand::thread_rng(), 1..7)" > #else > 1 > #endif > #else > let private random = System.Random () > let rollDice () = > random.Next (1, 7) > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumber max n = > (n - 1 + max) % max + 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumbers > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumbers max items = > items |> Seq.map (rotateNumber max) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[ -1 .. 14 ]] > |> rotateNumbers 6 > |> Seq.toList > |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 41.93ms - stdout ] ──────────────────────────────────────────────────────── > │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## createSequentialRoller > > ── fsharp ────────────────────────────────────────────────────────────────────── > let createSequentialRoller list = > let mutable currentIndex = 0 > fun () -> > match list |> List.tryItem currentIndex with > | Some item -> > currentIndex <- currentIndex + 1 > item > | None -> > failwith "createSequentialRoller / End of list" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollProgressively > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollProgressively log roll reroll max = > let power = (calculateDiceCount log max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result <= max -> result > | _ when reroll -> loop (List.init power (fun _ -> roll ())) power > | _ -> loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollProgressively None rollDice false 1 > |> _assertEqual 1 > > ── [ 19.41ms - stdout ] ──────────────────────────────────────────────────────── > │ 1 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] > > rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 > |> _assertEqual 995 > > ── [ 23.17ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] > > fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> > ignore > |> _throwsC (fun ex _ -> > SpiralSm.format_exception ex > |> _assertEqual "System.Exception: createSequentialRoller / End of list" > ) > > ── [ 52.12ms - stdout ] ──────────────────────────────────────────────────────── > │ <fun:it@5-13> > │ > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 2290 > │ "System.Exception: createSequentialRoller / End of list" > │ > │ > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice false 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice true 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[| 1 .. 100 |]] > |> Array.Parallel.iter (fun n -> > [[| 0 .. 1 |]] > |> Array.Parallel.iter (fun reroll -> > [[| 1 .. 3500 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll > = 1) n) > |> Array.Parallel.groupBy id > |> Array.length > |> __assertEqual false n > ) > ) > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let inline rollMax fn max n = > [[| 1 .. n |]] > |> Array.Parallel.map (fun _ -> fn max) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (_, v) -> v.Length) > > let rec rollN max n even current = > let roll = rollMax (rollProgressively None rollDice true) max n > if roll |> Array.Parallel.forall ((=) even) > then current > else rollN max n even (current + 1) > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > > rollN max n even 0 > > // run () > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > [[| 1 .. 100 |]] > |> Array.Parallel.map (fun i -> > let roll = rollN max n even 0 > printfn $"i: {i} / roll: {roll}" > float roll > ) > |> Array.Parallel.average > > // run () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## FsCheck (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. > dll" > #r > @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha6/lib/net6.0/ > Expecto.FsCheck3.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > type ValorDado = > | Um > | Dois > | Tres > | Quatro > | Cinco > | Seis > > type Aspecto = > | Passado of string > | Presente of string > | Futuro of string > | Desafios of string > | Recursos of string > | ResultadoProjetado of string > | InfluenciaExterna of string > > type Contexto = > | Amor of string > | Trabalho of string > | Saude of string > | Dinheiro of string > > type Universo = > | Real of string > | Virtual of string > | Espiritual of string > > type Caracteristica = > | Aspecto of Aspecto > | Contexto of Contexto > | Universo of Universo > | DadoRolado of ValorDado > > type Interacao = > | Conflito > | Parceria > | Crescimento > | Estagnacao > | Separacao > | Harmonia > | Desafio > | Colaboracao > | Progresso > | Mudanca > | Sucesso > > type Interpretacao = > | Interpretacao of Caracteristica * Interacao * Caracteristica > > type SistemaDivinacao = > | SistemaDivinacao of Interpretacao list * Caracteristica > > let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } > > let shuffleList xs seed = > let rnd = Random (seed) > xs > |> List.map (fun x -> rnd.Next(), x) > |> List.sortBy fst > |> List.map snd > > > > > type Complexity = Simple | Moderate | Complex > type Duration = Short | Medium | Long > > type Dice = D1 of int | D2 of int > > type Task = > | Task of Complexity * Duration * Task > | NoTask > > let durationOfFocus (d1: int) (d2: int) = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > > let complexityOfTask (d1: int) (d2: int) = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > > let rec generateTaskList d1 d2 previousTask = > match d1, d2 with > | d1, d2 when d1 > 0 && d2 > 0 -> > let complexity = complexityOfTask d1 d2 > let duration = durationOfFocus d1 d2 > let newTask = Task (complexity, duration, previousTask) > generateTaskList (d1 - 1) (d2 - 1) newTask > | _, _ -> previousTask > > > > > > let properties = > Expecto.Tests.testList "FsCheck samples" [[ > let sistemaDivinacao (interpretacoes: Interpretacao list, > caracteristica: Caracteristica) = > let interpretacoes = interpretacoes |> List.sort > SistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is consistent" <| > fun (interpretacoes: Interpretacao list, caracteristica: > Caracteristica) -> > sistemaDivinacao (interpretacoes, caracteristica) > = sistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is variant under permutation" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let seed = 42 > let shuffledInput = shuffleList input seed > sistemaDivinacao (input, caracteristica) = sistemaDivinacao > (shuffledInput, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > can handle lists of any size" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let sistema = sistemaDivinacao (input, caracteristica) > sistema <> Unchecked.defaultof<_> > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is invariant under data transformations" <| > fun (input: Interpretacao list, caracteristica: Caracteristica, > newInterpretation: Interpretacao) -> > let containsNewInterpretation = input |> List.contains > newInterpretation > let modifiedInput = > if containsNewInterpretation > then input > else newInterpretation :: input > if containsNewInterpretation > then sistemaDivinacao (List.sort input, caracteristica) > = sistemaDivinacao (List.sort modifiedInput, > caracteristica) > else sistemaDivinacao (List.sort input, caracteristica) > <> sistemaDivinacao (List.sort modifiedInput, > caracteristica) > > > > > > > let focusDurationProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > let actual = durationOfFocus d1 d2 > expected = actual > > let taskComplexityProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > let actual = complexityOfTask d1 d2 > expected = actual > > let taskListLengthProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let taskList = generateTaskList d1 d2 NoTask > let rec taskListLength taskList = > match taskList with > | Task (_, _, nextTask) -> 1 + taskListLength nextTask > | NoTask -> 0 > let actual = taskListLength taskList > let expected = min d1 d2 > expected = actual > > > Expecto.ExpectoFsCheck.testProperty "Duration of focus should be > calculated correctly" focusDurationProperty > Expecto.ExpectoFsCheck.testProperty "Task complexity should be > calculated correctly" taskComplexityProperty > Expecto.ExpectoFsCheck.testProperty "Task list should have the correct > length" taskListLengthProperty > > > > ]] > > let dice1 = 6 > let dice2 = 6 > > let taskList = generateTaskList dice1 dice2 NoTask > > let rec printTaskList taskList = > match taskList with > | Task (complexity, duration, nextTask) -> > printfn "Complexidade: %A, Duração: %A" complexity duration > printTaskList nextTask > | NoTask -> () > > printTaskList taskList > > Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties > |> _assertEqual 0 > > ── [ 6.08s - stdout ] ────────────────────────────────────────────────────────── > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Medium > │ Complexidade: Moderate, Duração: Medium > │ Complexidade: Complex, Duração: Long > │ Complexidade: Complex, Duração: Long > │ [18:13:44 INF] EXPECTO? Running tests... > <Expecto> > │ [18:13:49 INF] EXPECTO! 7 > tests run in 00:00:05.1373773 for FsCheck samples – 7 passed, > 0 ignored, 0 failed, 0 errored. Success! > <Expecto> > │ 0 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let result = rollProgressively (Some (printfn "%s")) rollDice true > (System.Int32.MaxValue / 10) > trace Debug (fun () -> $"main / result: {result}") _locals > 0 00:00:32 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24005 } 00:00:32 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:33 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb to html 00:00:33 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:33 v #7 ! validate(nb) 00:00:34 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:34 v #9 ! return _pygments_highlight( 00:00:34 v #10 ! [NbConvertApp] Writing 360781 bytes to c:\home\git\dice\lib\fsharp\dice_fsharp.dib.html 00:00:34 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:00:34 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:00:34 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/lib/fsharp/dice_fsharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/lib/fsharp/dice_fsharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:35 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:35 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:35 d #16 spiral.run / dib / { exit_code = 0; result_length = 24920 } 00:00:00 d #1 writeDibCode / output: Fs / path: dice_fsharp.dib 00:00:00 d #2 parseDibCode / output: Fs / file: dice_fsharp.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_fsharp / hash: / code.Length: 3403 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj (in 240 ms). 00:00:13 v #7 > dice_fsharp -> c:\home\git\polyglot\target\Builder\dice_fsharp\bin\Release\net9.0\linux-x64\dice_fsharp.dll 00:00:15 v #8 > dice_fsharp -> C:\home\git\dice\lib\fsharp\dist\ 00:00:15 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 451; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } } 00:00:15 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } } 00:00:16 v #11 > Determining projects to restore... 00:00:16 v #12 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:16 v #13 > The last full restore is still up to date. Nothing left to do. 00:00:16 v #14 > Total time taken: 0 milliseconds 00:00:17 v #15 > Restored c:\home\git\polyglot\target\Builder\dice_fsharp\dice_fsharp.fsproj (in 244 ms). 00:00:28 v #16 > dice_fsharp -> c:\home\git\polyglot\target\Builder\dice_fsharp\bin\Release\net9.0\win-x64\dice_fsharp.dll 00:00:29 v #17 > dice_fsharp -> C:\home\git\dice\lib\fsharp\dist\ 00:00:29 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 449; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_fsharp\dice_fsharp.fsproj" --configuration Release --output "C:\home\git\dice\lib\fsharp\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_fsharp" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_fsharp polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @selketjah Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 160ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 8287ms .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: ts / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0 Thanks to the contributor! @anchann Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 151ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 7861ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_fsharp / ProjectName: dice_fsharp / Language: py / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) Thanks to the contributor! @Leonqn Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_fsharp\dice_fsharp.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 149ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 7021ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/rs/dice_fsharp.rs / dice_fsharp.rs dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/ts/dice_fsharp.ts / dice_fsharp.ts dice/lib/fsharp/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_fsharp/target/py/dice_fsharp.py / dice_fsharp.py Compiling dice_fsharp v0.0.1 (C:\home\git\dice\lib\fsharp) Finished `release` profile [optimized] target(s) in 6.78s Running `C:\home\git\dice\target\release\dice_fsharp.exe` calculateDiceCount / max: 214748364 / n: 11 / p: 362797056 accumulateDiceRolls / power: 10 / acc: 0 / roll: 2 / value: 60466176 accumulateDiceRolls / power: 9 / acc: 60466176 / roll: 6 / value: 50388480 accumulateDiceRolls / power: 8 / acc: 110854656 / roll: 1 accumulateDiceRolls / power: 7 / acc: 110854656 / roll: 4 / value: 839808 accumulateDiceRolls / power: 6 / acc: 111694464 / roll: 5 / value: 186624 accumulateDiceRolls / power: 5 / acc: 111881088 / roll: 2 / value: 7776 accumulateDiceRolls / power: 4 / acc: 111888864 / roll: 2 / value: 1296 accumulateDiceRolls / power: 3 / acc: 111890160 / roll: 5 / value: 864 accumulateDiceRolls / power: 2 / acc: 111891024 / roll: 5 / value: 144 accumulateDiceRolls / power: 1 / acc: 111891168 / roll: 4 / value: 18 accumulateDiceRolls / power: 0 / acc: 111891186 / roll: 6 / value: 5 accumulateDiceRolls / power: -1 / acc: 111891191 00:00:00 d #1 main / result: 111891192 dice/lib/fsharp/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice_fsharp / $projectName: dice_fsharp / $env:CI:'' <dice_ui> <app.render> <home.render> <content.render> <dice_view.render> <use_transactions.render> <lists_view.render> <transactions_view.render> <use_transactions.render> <transaction.render> <transaction.tr_render> <transaction.tr_head_render> <settings_view.render> <menu_tabs.render> </dice_ui> 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_ui / hash: / code.Length: 1991941 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_ui polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_ui / ProjectName: dice_ui / Language: rs / Runtime: WASM / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @oopbase Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_ui\dice_ui.fsproj... Retrieving project options from cache, in case of issues run `dotnet fable clean` or try `--noCache` option. Project and references (14 source files) parsed in 155ms Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Users/i574n/scoop/apps/dotnet-sdk/current/packs/Microsoft.AspNetCore.App.Ref/9.0.1/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 26239ms .\target\Builder\dice_ui\dice_ui.fs(25518,11): (25518,12) warning FSHARP: This rule will never be matched (code 26) .\target\Builder\dice_ui\dice_ui.fs(25944,11): (25944,12) warning FSHARP: This rule will never be matched (code 26) .\target\Builder\dice_ui\dice_ui.fs(25957,15): (25957,16) warning FSHARP: This rule will never be matched (code 26) .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2345,0): (2345,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(559,0): (559,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2118,0): (2118,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(4936,0): (4936,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2151,0): (2151,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7422,0): (7422,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(18685,0): (18685,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\dice_ui\dice_ui.fs(270,0): (272,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\dice_ui\dice_ui.fs(283,0): (285,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\dice_ui\dice_ui.fs(288,0): (290,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/ui/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_ui/target/rs/dice_ui.rs polyglot/scripts/core.ps1/GetFullPath / Path: ./src/dice_ui_wasm.rs / Location: C:\home\git\dice\ui / ResolvedLocation: C:\home\git\dice\ui polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\dice\ui\src\dice_ui_wasm.rs max_width = 100 tab_spaces = 4 indentation_style = "Auto" newline_style = "Auto" attr_value_brace_style = "WhenRequired" closing_tag_style = "Preserve" macro_names = [ "leptos::view", "view", ] [attr_values] ✅ C:\home\git\dice\ui\src\dice_ui_wasm.rs ℹ️ Formatted 1 files in 489 ms bun install v1.2.4 (fd9a5ea6) Checked 146 installs across 161 packages (no changes) [94.00ms] $ tailwindcss -i app.css -o target/tailwind.css -m Browserslist: caniuse-lite is outdated. Please run: npx update-browserslist-db@latest Why you should do it regularly: https://github.com/browserslist/update-db#readme Rebuilding... Done in 1889ms. trunk: 2025-03-05T22:15:58.174391Z INFO 🚀 Starting trunk 0.21.5 2025-03-05T22:15:58.190539Z INFO ⏫ Found an update of trunk: 0.21.5 -> 0.21.8 2025-03-05T22:15:59.286649Z INFO 📦 starting build Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling dice_ui v0.0.1 (C:\home\git\dice\ui) error: proc macro panicked --> ui\src\dice_ui_wasm.rs:31350:145 | 31350 | ...dren=Box::new(move || v72()) view= move || v69() path=leptos_router::path!(v68) /> }, | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: message: not implemented error: proc macro panicked --> ui\src\dice_ui_wasm.rs:31359:146 | 31359 | ...ren=Box::new(move || v72()) view= move || v149() path=leptos_router::path!(v148) /> }, | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: message: not implemented error: proc macro panicked --> ui\src\dice_ui_wasm.rs:31368:146 | 31368 | ...ren=Box::new(move || v72()) view= move || v227() path=leptos_router::path!(v226) /> }, | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: message: not implemented error: proc macro panicked --> ui\src\dice_ui_wasm.rs:31377:146 | 31377 | ...ren=Box::new(move || v72()) view= move || v305() path=leptos_router::path!(v304) /> }, | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: message: not implemented error[E0425]: cannot find value `value` in this scope --> ui\src\dice_ui_wasm.rs:13053:49 | 13053 | let v485: std::string::String = value; | ^^^^^ not found in this scope | help: consider importing this function | 16 + use leptos::attr::value; | error[E0425]: cannot find value `_fix_closure_v1444` in this scope --> ui\src\dice_ui_wasm.rs:25917:25 | 25917 | _fix_closure_v1444 | ^^^^^^^^^^^^^^^^^^ not found in this scope warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:44:1 | 44 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = help: expected names are: `docsrs`, `feature`, and `test` and 31 more = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: `#[warn(unexpected_cfgs)]` on by default = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:59:1 | 59 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:65:1 | 65 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:71:1 | 71 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:76:1 | 76 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:81:1 | 81 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` --> ui\src\state.rs:102:1 | 102 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ | = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\networking_wasm.rs:528:33 | 528 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 528 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 528 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\networking_wasm.rs:528:58 | 528 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 528 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 528 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:703:33 | 703 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 703 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 703 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:703:58 | 703 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 703 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 703 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:969:30 | 969 | break '_method29 (match v0_1.get().clone().as_ref() { | ^ ... 1007 | }); | ^ | help: remove these parentheses | 969 ~ break '_method29 match v0_1.get().clone().as_ref() { 970 | Runtime::UH0::UH0_0 => (v1_1.get().clone(), v2_1.get().clone(), v3.get().clone()), ... 1006 | } 1007 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1014:62 | 1014 | (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) | ^ ^ | help: remove these parentheses | 1014 - (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) 1014 + (Runtime::method30(v0_1, (v1_1) + 1_i32))(append(v2_1, string(" "))) | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1104:25 | 1104 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1104 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1104 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1192:25 | 1192 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1192 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1192 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1209:30 | 1209 | break '_method31 (match v2_1.get().clone().as_ref() { | ^ ... 1241 | }); | ^ | help: remove these parentheses | 1209 ~ break '_method31 match v2_1.get().clone().as_ref() { 1210 | Runtime::UH1::UH1_0 => { ... 1240 | } 1241 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1248:30 | 1248 | break '_method32 (if (v1_1.get().clone()) >= 2_i64 { | ^ ... 1279 | }); | ^ | help: remove these parentheses | 1248 ~ break '_method32 if (v1_1.get().clone()) >= 2_i64 { 1249 | false ... 1278 | } 1279 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1295:30 | 1295 | break '_method33 ({ | ^ ... 1393 | }); | ^ | help: remove these parentheses | 1295 ~ break '_method33 { 1296 | let v145: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1392 | } 1393 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1373:36 | 1373 | ... append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1373 - append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); 1373 + append(v0_1.get().clone(), (ofChar(v157_0_0.clone()))); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1373:58 | 1373 | ... append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1373 - append((v0_1.get().clone()), (ofChar(v157_0_0.clone()))); 1373 + append((v0_1.get().clone()), ofChar(v157_0_0.clone())); | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1409:30 | 1409 | break '_method34 (match v4.get().clone().as_ref() { | ^ ... 1444 | }); | ^ | help: remove these parentheses | 1409 ~ break '_method34 match v4.get().clone().as_ref() { 1410 | Runtime::UH1::UH1_0 => { ... 1443 | } 1444 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1451:30 | 1451 | break '_method35 (if (v1_1.get().clone()) >= 3_i64 { | ^ ... 1487 | }); | ^ | help: remove these parentheses | 1451 ~ break '_method35 if (v1_1.get().clone()) >= 3_i64 { 1452 | false ... 1486 | } 1487 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1503:30 | 1503 | break '_method36 ({ | ^ ... 1601 | }); | ^ | help: remove these parentheses | 1503 ~ break '_method36 { 1504 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1600 | } 1601 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1581:36 | 1581 | ... append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1581 - append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); 1581 + append(v0_1.get().clone(), (ofChar(v165_0_0.clone()))); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1581:58 | 1581 | ... append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1581 - append((v0_1.get().clone()), (ofChar(v165_0_0.clone()))); 1581 + append((v0_1.get().clone()), ofChar(v165_0_0.clone())); | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1608:30 | 1608 | break '_method37 (if (v1_1.get().clone()) >= (length(v0_1.get().clone())) { | ^ ... 1620 | }); | ^ | help: remove these parentheses | 1608 ~ break '_method37 if (v1_1.get().clone()) >= (length(v0_1.get().clone())) { 1609 | v1_1.get().clone() ... 1619 | } 1620 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1636:30 | 1636 | break '_method38 ({ | ^ ... 1711 | }); | ^ | help: remove these parentheses | 1636 ~ break '_method38 { 1637 | let v108: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 1710 | } 1711 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1691:36 | 1691 | ... append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1691 - append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); 1691 + append(v0_1.get().clone(), (ofChar(v108_0_0.clone()))); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:1691:58 | 1691 | ... append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1691 - append((v0_1.get().clone()), (ofChar(v108_0_0.clone()))); 1691 + append((v0_1.get().clone()), ofChar(v108_0_0.clone())); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:2149:37 | 2149 | ... ((Runtime::method30((v515) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2149 - ((Runtime::method30((v515) - 1_i32, 0_i32))(string(""))), 2149 + (Runtime::method30((v515) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3243:30 | 3243 | break '_method62 (if (v1_1.get().clone()) >= 4_i64 { | ^ ... 3284 | }); | ^ | help: remove these parentheses | 3243 ~ break '_method62 if (v1_1.get().clone()) >= 4_i64 { 3244 | false ... 3283 | } 3284 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3300:30 | 3300 | break '_method63 ({ | ^ ... 3385 | }); | ^ | help: remove these parentheses | 3300 ~ break '_method63 { 3301 | let v161: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 3384 | } 3385 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3365:36 | 3365 | ... append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3365 - append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); 3365 + append(v0_1.get().clone(), (ofChar(v161_0_0.clone()))); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3365:58 | 3365 | ... append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3365 - append((v0_1.get().clone()), (ofChar(v161_0_0.clone()))); 3365 + append((v0_1.get().clone()), ofChar(v161_0_0.clone())); | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3392:30 | 3392 | break '_method65 (if (v1_1.get().clone()) >= 3_i64 { | ^ ... 3428 | }); | ^ | help: remove these parentheses | 3392 ~ break '_method65 if (v1_1.get().clone()) >= 3_i64 { 3393 | false ... 3427 | } 3428 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3511:25 | 3511 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3511 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3511 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3578:28 | 3578 | append((ofChar('\\')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3578 - append((ofChar('\\')), (ofChar(v285_0_0.clone()))), 3578 + append(ofChar('\\'), (ofChar(v285_0_0.clone()))), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3578:44 | 3578 | append((ofChar('\\')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3578 - append((ofChar('\\')), (ofChar(v285_0_0.clone()))), 3578 + append((ofChar('\\')), ofChar(v285_0_0.clone())), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3668:25 | 3668 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3668 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3668 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3735:28 | 3735 | append((ofChar('`')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3735 - append((ofChar('`')), (ofChar(v285_0_0.clone()))), 3735 + append(ofChar('`'), (ofChar(v285_0_0.clone()))), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3735:43 | 3735 | append((ofChar('`')), (ofChar(v285_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3735 - append((ofChar('`')), (ofChar(v285_0_0.clone()))), 3735 + append((ofChar('`')), ofChar(v285_0_0.clone())), | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3758:30 | 3758 | break '_method66 (match v4.get().clone().as_ref() { | ^ ... 3793 | }); | ^ | help: remove these parentheses | 3758 ~ break '_method66 match v4.get().clone().as_ref() { 3759 | Runtime::UH3::UH3_0 => { ... 3792 | } 3793 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3803:30 | 3803 | break '_method67 (match v0_1.get().clone().as_ref() { | ^ ... 3823 | }); | ^ | help: remove these parentheses | 3803 ~ break '_method67 match v0_1.get().clone().as_ref() { 3804 | Runtime::UH2::UH2_0 => v1_1.get().clone(), ... 3822 | } 3823 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:3839:30 | 3839 | break '_method64 ({ | ^ ... 3967 | }); | ^ | help: remove these parentheses | 3839 ~ break '_method64 { 3840 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 3966 | } 3967 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:4003:30 | 4003 | break '_method69 ({ | ^ ... 4100 | }); | ^ | help: remove these parentheses | 4003 ~ break '_method69 { 4004 | let v153: Runtime::US7 = if string("") == (v1_1.get().clone()) { ... 4099 | } 4100 ~ }; | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:4116:30 | 4116 | break '_method61 ({ | ^ ... 4647 | }); | ^ | help: remove these parentheses | 4116 ~ break '_method61 { 4117 | let v5: bool = string("") == (v1_1.get().clone()); ... 4646 | } 4647 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:4283:96 | 4283 | ... append(((Runtime::method30((v4.get().clone()) | ^ ... 4286 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4283 ~ append((Runtime::method30((v4.get().clone()) 4284 | - 4285 | 1_i32, 4286 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\runtime_wasm.rs:4431:116 | 4431 | ... append(((Runtime::method30((v398) | ^ ... 4434 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4431 ~ append((Runtime::method30((v398) 4432 | - 4433 | 1_i32, 4434 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\trace_wasm.rs:474:33 | 474 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 474 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 474 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\trace_wasm.rs:474:58 | 474 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 474 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 474 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:728:33 | 728 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 728 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 728 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:728:58 | 728 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 728 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 728 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:2474:81 | 2474 | (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2474 - (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2474 + (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1))) | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:2474:87 | 2474 | (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2474 - (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2474 + (File_system::method109(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1)) | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:2488:13 | 2488 | ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2488 - ((File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string(""))), 2488 + (File_system::method109(32_i32 - (length(v0_1.clone())), v3, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:2489:13 | 2489 | (v0_1), | ^ ^ | help: remove these parentheses | 2489 - (v0_1), 2489 + v0_1, | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:3155:31 | 3155 | break '_method141 (if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { | ^ ... 3196 | }); | ^ | help: remove these parentheses | 3155 ~ break '_method141 if v3(File_system::method90(v4.get().clone(), v0_1.get().clone())) { 3156 | File_system::US17::US17_0(v4.get().clone()) ... 3195 | } 3196 ~ }; | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:3180:25 | 3180 | (concat(new_array(&[ | ^ ... 3187 | ]))), | ^ | help: remove these parentheses | 3180 ~ concat(new_array(&[ 3181 | string("file_system.find_parent / No parent for "), ... 3186 | }, 3187 ~ ])), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\file_system_wasm.rs:3224:21 | 3224 | (concat(new_array(&[ | ^ ... 3227 | ]))), | ^ | help: remove these parentheses | 3224 ~ concat(new_array(&[ 3225 | string("file_system.find_parent / No parent for "), 3226 | if v2_1 { string("file") } else { string("dir") }, 3227 ~ ])), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:94:70 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1))) | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:94:78 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1)) | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:108:13 | 108 | ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 108 - ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), 108 + (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:109:13 | 109 | (v2_1), | ^ ^ | help: remove these parentheses | 109 - (v2_1), 109 + v2_1, | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:128:13 | 128 | (v2_1.clone()), | ^ ^ | help: remove these parentheses | 128 - (v2_1.clone()), 128 + v2_1.clone(), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:129:13 | 129 | ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 129 - ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), 129 + (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:340:17 | 340 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 340 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 340 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:405:17 | 405 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 405 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 405 + append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:405:25 | 405 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 405 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 405 + (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:405:73 | 405 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 405 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 405 + (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:405:33 | 405 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 405 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 405 + (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\sm_wasm.rs:405:55 | 405 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 405 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 405 + (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\crypto_wasm.rs:523:33 | 523 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 523 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 523 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\crypto_wasm.rs:523:58 | 523 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 523 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 523 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\common_wasm.rs:553:33 | 553 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 553 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 553 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\common_wasm.rs:553:58 | 553 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 553 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 553 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around `break` value --> ui\src\..\..\deps\polyglot\deps\spiral\lib\spiral\common_wasm.rs:730:29 | 730 | break '_method8 ({ | ^ ... 767 | }); | ^ | help: remove these parentheses | 730 ~ break '_method8 { 731 | let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); ... 766 | } 767 ~ }; | error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:25182:21 | 25181 | let v135: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 25182 | / Option::map(leptos::prelude::ArcLocalResource::get(&v127.clone()), |x| { 25183 | | x.clone() 25184 | | }); | |______________________^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:25542:29 | 25541 | let v724: Option<Dice_ui::US8> = | -------------------- expected due to this 25542 | / Option::map(leptos::prelude::ArcLocalResource::get(&v678), |x| { 25543 | | x.clone() 25544 | | }); | |______________________________^ expected `Option<US8>`, found `Option<SendWrapper<US8>>` | = note: expected enum `std::option::Option<module_9c940d83::Dice_ui::US8>` found enum `std::option::Option<send_wrapper::SendWrapper<module_9c940d83::Dice_ui::US8>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:25821:21 | 25820 | let v1312: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 25821 | Option::map(leptos::prelude::ArcLocalResource::get(&v127), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0277]: `dyn futures::Future<Output = ()>` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:25931:17 | 25931 | / leptos::prelude::ArcAction::new(move |value: &std::sync::Arc<Heap3>| { 25932 | | Func1::new({ 25933 | | let v1460 = v1460.clone(); 25934 | | move |v_5: LrcPtr<Dice_ui::Heap3>| Dice_ui::closure37(v1460.clone(), v_5) 25935 | | })(value.clone()) 25936 | | }); | |__________________^ `dyn futures::Future<Output = ()>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures::Future<Output = ()>` = note: required for `Unique<dyn futures::Future<Output = ()>>` to implement `std::marker::Send` note: required because it appears within the type `Box<dyn futures::Future<Output = ()>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `Pin<Box<dyn futures::Future<Output = ()>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:12 | 1089 | pub struct Pin<Ptr> { | ^^^ note: required by a bound in `ArcAction::<I, O>::new` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\actions\action.rs:172:34 | 169 | pub fn new<F, Fu>(action_fn: F) -> Self | --- required by a bound in this associated function ... 172 | Fu: Future<Output = O> + Send + 'static, | ^^^^ required by this bound in `ArcAction::<I, O>::new` error[E0277]: the trait bound `leptos_router::location::Url: TryFrom<&str>` is not satisfied --> ui\src\dice_ui_wasm.rs:26194:21 | 26194 | leptos_router::location::Url::try_from(v1925); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<&str>` is not implemented for `leptos_router::location::Url` | = note: required for `&str` to implement `Into<leptos_router::location::Url>` = note: required for `leptos_router::location::Url` to implement `TryFrom<&str>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:26194:21 | 26193 | let v1927: Result<leptos_router::location::Url, std::string::String> = | --------------------------------------------------------- expected due to this 26194 | leptos_router::location::Url::try_from(v1925); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Result<Url, String>`, found `Result<Url, Infallible>` | = note: expected enum `std::result::Result<_, std::string::String>` found enum `std::result::Result<_, Infallible>` error[E0609]: no field `pathname` on type `leptos_router::location::Url` --> ui\src\dice_ui_wasm.rs:26214:72 | 26214 | let v1978: std::string::String = v1976.clone().pathname; | ^^^^^^^^ unknown field error[E0609]: no field `pathname` on type `leptos_router::location::Url` --> ui\src\dice_ui_wasm.rs:26233:80 | 26233 | ... let v1995: std::string::String = v1976.clone().pathname; | ^^^^^^^^ unknown field error[E0609]: no field `pathname` on type `leptos_router::location::Url` --> ui\src\dice_ui_wasm.rs:26254:80 | 26254 | ... let v2013: std::string::String = v1976.clone().pathname; | ^^^^^^^^ unknown field error[E0609]: no field `pathname` on type `leptos_router::location::Url` --> ui\src\dice_ui_wasm.rs:26275:80 | 26275 | ... let v2031: std::string::String = v1976.clone().pathname; | ^^^^^^^^ unknown field error[E0599]: the method `clone` exists for struct `Func1<Arc<Heap6>, Pin<Box<dyn Future<Output = Result<US59, String>>>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:26816:47 | 26816 | ... let v3045 = v3045.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<US59, std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<Arc<Heap6>, Pin<Box<dyn futures::Future<Output = std::result::Result<US59, std::string::String>>>>>: Clone` error[E0277]: `dyn futures::Future<Output = std::result::Result<US59, std::string::String>>` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:26814:25 | 26814 | > = leptos::prelude::ArcAction::new(move |value: &std::sync::Arc<Heap6>| { | _________________________^ 26815 | | Func1::new({ 26816 | | let v3045 = v3045.clone(); 26817 | | move |v_9: LrcPtr<Dice_ui::Heap6>| { ... | 26820 | | })(value.clone()) 26821 | | }); | |______________________^ `dyn futures::Future<Output = std::result::Result<US59, std::string::String>>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures::Future<Output = std::result::Result<US59, std::string::String>>` = note: required for `Unique<dyn futures::Future<Output = std::result::Result<US59, std::string::String>>>` to implement `std::marker::Send` note: required because it appears within the type `Box<dyn futures::Future<Output = std::result::Result<US59, std::string::String>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `Pin<Box<dyn futures::Future<Output = std::result::Result<US59, std::string::String>>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:12 | 1089 | pub struct Pin<Ptr> { | ^^^ note: required by a bound in `ArcAction::<I, O>::new` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\actions\action.rs:172:34 | 169 | pub fn new<F, Fu>(action_fn: F) -> Self | --- required by a bound in this associated function ... 172 | Fu: Future<Output = O> + Send + 'static, | ^^^^ required by this bound in `ArcAction::<I, O>::new` error[E0599]: no method named `clone` found for struct `AnyView` in the current scope --> ui\src\dice_ui_wasm.rs:27916:47 | 27916 | ... let v4576 = v4576.clone(); | ^^^^^ method not found in `AnyView` error[E0599]: no method named `clone` found for struct `AnyView` in the current scope --> ui\src\dice_ui_wasm.rs:27934:67 | 27934 | let v4624: string = (Dice_ui::method214(v4576.clone()))(); | ^^^^^ method not found in `AnyView` error[E0599]: no method named `clone` found for struct `AnyView` in the current scope --> ui\src\dice_ui_wasm.rs:29279:51 | 29279 | ... let v3872 = v3872.clone(); | ^^^^^ method not found in `AnyView` error[E0599]: no method named `clone` found for struct `AnyView` in the current scope --> ui\src\dice_ui_wasm.rs:29297:71 | 29297 | let v3920: string = (Dice_ui::method243(v3872.clone()))(); | ^^^^^ method not found in `AnyView` error[E0277]: the trait bound `AnyView: From<&Fragment>` is not satisfied --> ui\src\dice_ui_wasm.rs:29969:59 | 29969 | let v5440: leptos::prelude::AnyView = leptos::prelude::AnyView::from( | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<&Fragment>` is not implemented for `AnyView` | = help: the trait `From<&Fragment>` is not implemented for `AnyView` but trait `From<Fragment>` is implemented for it = help: for that trait implementation, expected `Fragment`, found `&Fragment` error[E0277]: the trait bound `leptos_router::location::Url: From<&str>` is not satisfied --> ui\src\dice_ui_wasm.rs:26194:21 | 26194 | leptos_router::location::Url::try_from(v1925); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `From<&str>` is not implemented for `leptos_router::location::Url` | = note: required for `&str` to implement `Into<leptos_router::location::Url>` = note: required for `leptos_router::location::Url` to implement `TryFrom<&str>` error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types --> ui\src\dice_ui_wasm.rs:25053:81 | 25053 | ) -> leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>> { | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types --> ui\src\dice_ui_wasm.rs:31222:92 | 31222 | ) -> Func1<i32, leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>> | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31232:84 | 31232 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31247:84 | 31247 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31263:84 | 31263 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31278:84 | 31278 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31289:84 | 31289 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31304:84 | 31304 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31315:84 | 31315 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions --> ui\src\dice_ui_wasm.rs:31330:84 | 31330 | leptos::prelude::View<leptos::html::HtmlElement<leptos::html::Div, _, _>>, | ^ ^ not allowed in type signatures | | | not allowed in type signatures error[E0425]: cannot find function `v72` in this scope --> ui\src\dice_ui_wasm.rs:31350:113 | 31350 | ...rentRoute children=Box::new(move || v72()) view= move || v69() path=leptos_router::path!(v68) /> }, | ^^^ help: a local variable with a similar name exists: `v79` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:31350:21 | 31350 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v69() path=leptos_router::path!(v68) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `NestedRoute<_, _, _, _>`, found `View<NestedRoute<_, _, (), _>>` | = note: expected struct `NestedRoute<_, _, _, _>` found struct `leptos::prelude::View<NestedRoute<_, _, (), _>>` = note: this error originates in the macro `leptos::prelude::view` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `NestedRoute<_, _, _, _>: leptos::prelude::Render` is not satisfied --> ui\src\dice_ui_wasm.rs:31350:21 | 31349 | ... leptos::IntoView::into_view( | --------------------------- required by a bound introduced by this call 31350 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v69() path=leptos_router::path!(v68) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | the trait `FnMut()` is not implemented for `NestedRoute<_, _, _, _>` | this tail expression is of type `View<NestedRoute<_, _, (), _>>` | = help: the following other types implement trait `leptos::prelude::Render`: &'a str () (A, B) (A, B, C) (A, B, C, D) (A, B, C, D, E) (A, B, C, D, E, F) (A, B, C, D, E, F, G) and 93 others = note: required for `NestedRoute<_, _, _, _>` to implement `ReactiveFunction` = note: required for `NestedRoute<_, _, _, _>` to implement `leptos::prelude::Render` note: required by a bound in `into_view` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\leptos-0.7.0\src\into_view.rs:57:19 | 57 | Self: Sized + Render + RenderHtml + Send, | ^^^^^^ required by this bound in `IntoView::into_view` ... 60 | fn into_view(self) -> View<Self>; | --------- required by a bound in this associated function help: you might have meant to create the closure instead of a block | 31350 | |_| leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v69() path=leptos_router::path!(v68) /> }, | +++ error[E0425]: cannot find function `v72` in this scope --> ui\src\dice_ui_wasm.rs:31359:113 | 31359 | ...rentRoute children=Box::new(move || v72()) view= move || v149() path=leptos_router::path!(v148) /> }, | ^^^ help: a local variable with a similar name exists: `v79` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:31359:21 | 31359 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v149() path=leptos_router::path!(v148) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `NestedRoute<_, _, _, _>`, found `View<NestedRoute<_, _, (), _>>` | = note: expected struct `NestedRoute<_, _, _, _>` found struct `leptos::prelude::View<NestedRoute<_, _, (), _>>` = note: this error originates in the macro `leptos::prelude::view` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `NestedRoute<_, _, _, _>: leptos::prelude::Render` is not satisfied --> ui\src\dice_ui_wasm.rs:31359:21 | 31358 | ... leptos::IntoView::into_view( | --------------------------- required by a bound introduced by this call 31359 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v149() path=leptos_router::path!(v148) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | the trait `FnMut()` is not implemented for `NestedRoute<_, _, _, _>` | this tail expression is of type `View<NestedRoute<_, _, (), _>>` | = help: the following other types implement trait `leptos::prelude::Render`: &'a str () (A, B) (A, B, C) (A, B, C, D) (A, B, C, D, E) (A, B, C, D, E, F) (A, B, C, D, E, F, G) and 93 others = note: required for `NestedRoute<_, _, _, _>` to implement `ReactiveFunction` = note: required for `NestedRoute<_, _, _, _>` to implement `leptos::prelude::Render` note: required by a bound in `into_view` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\leptos-0.7.0\src\into_view.rs:57:19 | 57 | Self: Sized + Render + RenderHtml + Send, | ^^^^^^ required by this bound in `IntoView::into_view` ... 60 | fn into_view(self) -> View<Self>; | --------- required by a bound in this associated function help: you might have meant to create the closure instead of a block | 31359 | |_| leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v149() path=leptos_router::path!(v148) /> }, | +++ error[E0425]: cannot find function `v72` in this scope --> ui\src\dice_ui_wasm.rs:31368:113 | 31368 | ...rentRoute children=Box::new(move || v72()) view= move || v227() path=leptos_router::path!(v226) /> }, | ^^^ help: a local variable with a similar name exists: `v79` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:31368:21 | 31368 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v227() path=leptos_router::path!(v226) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `NestedRoute<_, _, _, _>`, found `View<NestedRoute<_, _, (), _>>` | = note: expected struct `NestedRoute<_, _, _, _>` found struct `leptos::prelude::View<NestedRoute<_, _, (), _>>` = note: this error originates in the macro `leptos::prelude::view` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `NestedRoute<_, _, _, _>: leptos::prelude::Render` is not satisfied --> ui\src\dice_ui_wasm.rs:31368:21 | 31367 | ... leptos::IntoView::into_view( | --------------------------- required by a bound introduced by this call 31368 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v227() path=leptos_router::path!(v226) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | the trait `FnMut()` is not implemented for `NestedRoute<_, _, _, _>` | this tail expression is of type `View<NestedRoute<_, _, (), _>>` | = help: the following other types implement trait `leptos::prelude::Render`: &'a str () (A, B) (A, B, C) (A, B, C, D) (A, B, C, D, E) (A, B, C, D, E, F) (A, B, C, D, E, F, G) and 93 others = note: required for `NestedRoute<_, _, _, _>` to implement `ReactiveFunction` = note: required for `NestedRoute<_, _, _, _>` to implement `leptos::prelude::Render` note: required by a bound in `into_view` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\leptos-0.7.0\src\into_view.rs:57:19 | 57 | Self: Sized + Render + RenderHtml + Send, | ^^^^^^ required by this bound in `IntoView::into_view` ... 60 | fn into_view(self) -> View<Self>; | --------- required by a bound in this associated function help: you might have meant to create the closure instead of a block | 31368 | |_| leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v227() path=leptos_router::path!(v226) /> }, | +++ error[E0425]: cannot find function `v72` in this scope --> ui\src\dice_ui_wasm.rs:31377:113 | 31377 | ...rentRoute children=Box::new(move || v72()) view= move || v305() path=leptos_router::path!(v304) /> }, | ^^^ help: a local variable with a similar name exists: `v79` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:31377:21 | 31377 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v305() path=leptos_router::path!(v304) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `NestedRoute<_, _, _, _>`, found `View<NestedRoute<_, _, (), _>>` | = note: expected struct `NestedRoute<_, _, _, _>` found struct `leptos::prelude::View<NestedRoute<_, _, (), _>>` = note: this error originates in the macro `leptos::prelude::view` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `NestedRoute<_, _, _, _>: leptos::prelude::Render` is not satisfied --> ui\src\dice_ui_wasm.rs:31377:21 | 31376 | ... leptos::IntoView::into_view( | --------------------------- required by a bound introduced by this call 31377 | ... leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v305() path=leptos_router::path!(v304) />... | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | the trait `FnMut()` is not implemented for `NestedRoute<_, _, _, _>` | this tail expression is of type `View<NestedRoute<_, _, (), _>>` | = help: the following other types implement trait `leptos::prelude::Render`: &'a str () (A, B) (A, B, C) (A, B, C, D) (A, B, C, D, E) (A, B, C, D, E, F) (A, B, C, D, E, F, G) and 93 others = note: required for `NestedRoute<_, _, _, _>` to implement `ReactiveFunction` = note: required for `NestedRoute<_, _, _, _>` to implement `leptos::prelude::Render` note: required by a bound in `into_view` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\leptos-0.7.0\src\into_view.rs:57:19 | 57 | Self: Sized + Render + RenderHtml + Send, | ^^^^^^ required by this bound in `IntoView::into_view` ... 60 | fn into_view(self) -> View<Self>; | --------- required by a bound in this associated function help: you might have meant to create the closure instead of a block | 31377 | |_| leptos::prelude::view! { <leptos_router::components::ParentRoute children=Box::new(move || v72()) view= move || v305() path=leptos_router::path!(v304) /> }, | +++ error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types --> ui\src\dice_ui_wasm.rs:31341:67 | 31341 | ) -> Vec<leptos::prelude::View<leptos_router::NestedRoute<_, _, _, _>>> { | ^ ^ ^ ^ not allowed in type signatures | | | | | | | not allowed in type signatures | | not allowed in type signatures | not allowed in type signatures error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types --> ui\src\dice_ui_wasm.rs:31382:88 | 31382 | pub fn method4() -> Func0<Vec<leptos::prelude::View<leptos_router::NestedRoute<_, _, _, _>>>> | ^ ^ ^ ^ not allowed in type signatures | | | | | | | not allowed in type signatures | | not allowed in type signatures | not allowed in type signatures error[E0282]: type annotations needed --> ui\src\dice_ui_wasm.rs:31387:13 | 31387 | v0_1: Func0<Vec<leptos::prelude::View<leptos_router::NestedRoute<_, _, _, _>>>>, | ^^^^ cannot infer type for struct `fable_library_rust::Native_::Func0<Vec<leptos::prelude::View<NestedRoute<_, _, _, _>>>>` error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types --> ui\src\dice_ui_wasm.rs:31388:73 | 31388 | ) -> Func0<Vec<leptos::prelude::View<leptos_router::NestedRoute<_, _, _, _>>>> { | ^ ^ ^ ^ not allowed in type signatures | | | | | | | not allowed in type signatures | | not allowed in type signatures | not allowed in type signatures error[E0433]: failed to resolve: use of unresolved module or unlinked crate `leptos_meta` --> ui\src\dice_ui_wasm.rs:31411:13 | 31411 | leptos_meta::provide_meta_context(); | ^^^^^^^^^^^ use of unresolved module or unlinked crate `leptos_meta` | = help: if you wanted to use a crate named `leptos_meta`, use `cargo add leptos_meta` to add it to your `Cargo.toml` error[E0425]: cannot find function `v238` in this scope --> ui\src\dice_ui_wasm.rs:31453:104 | 31453 | leptos::prelude::view! { <leptos_router::components::Router children=Box::new(move || v238()) /> }, | ^^^^ help: a local variable with a similar name exists: `v228` error[E0277]: the trait bound `Fragment: Clone` is not satisfied --> ui\src\dice_ui_wasm.rs:366:20 | 364 | #[derive(Clone, Debug)] | ----- in this derive macro expansion 365 | pub enum US22 { 366 | US22_0(leptos::prelude::Fragment), | ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `Fragment` | = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: `Fragment` doesn't implement `std::fmt::Debug` --> ui\src\dice_ui_wasm.rs:366:20 | 364 | #[derive(Clone, Debug)] | ----- in this derive macro expansion 365 | pub enum US22 { 366 | US22_0(leptos::prelude::Fragment), | ^^^^^^^^^^^^^^^^^^^^^^^^^ `Fragment` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug` | = help: the trait `std::fmt::Debug` is not implemented for `Fragment` = note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `Heap5: Hash` is not satisfied --> ui\src\dice_ui_wasm.rs:762:17 | 758 | #[derive(Clone, Debug, Hash, PartialEq, PartialOrd)] | ---- in this derive macro expansion ... 762 | Result<Option<Vec<(string, usize, LrcPtr<Dice_ui::Heap5>)>>, std::string::String>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Hash` is not implemented for `Heap5` | = help: the trait `Hash` is implemented for `std::result::Result<T, E>` = note: required for `Arc<Heap5>` to implement `Hash` = note: 4 redundant requirements hidden = note: required for `Result<Option<Vec<(LrcStr, usize, Arc<Heap5>)>>, String>` to implement `Hash` = note: the full name for the type has been written to 'C:\home\git\dice\target\wasm32-unknown-unknown\release\deps\dice_ui.long-type-8063971652246672763.txt' = note: consider using `--verbose` to print the full type name to the console = note: this error originates in the derive macro `Hash` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: can't compare `Heap5` with `Heap5` --> ui\src\dice_ui_wasm.rs:762:17 | 758 | #[derive(Clone, Debug, Hash, PartialEq, PartialOrd)] | ---------- in this derive macro expansion ... 762 | Result<Option<Vec<(string, usize, LrcPtr<Dice_ui::Heap5>)>>, std::string::String>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `Heap5 < Heap5` and `Heap5 > Heap5` | = help: the trait `PartialOrd` is not implemented for `Heap5` = note: required for `Arc<Heap5>` to implement `PartialOrd` = note: 4 redundant requirements hidden = note: required for `Result<Option<Vec<(LrcStr, usize, Arc<Heap5>)>>, String>` to implement `PartialOrd` = note: the full name for the type has been written to 'C:\home\git\dice\target\wasm32-unknown-unknown\release\deps\dice_ui.long-type-8063971652246672763.txt' = note: consider using `--verbose` to print the full type name to the console = note: this error originates in the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider annotating `Heap5` with `#[derive(PartialOrd)]` | 627 + #[derive(PartialOrd)] 628 | pub struct Heap5 { | error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:1608:57 | 1597 | let _vec_map: Vec<_> = v10 | ____________________________________- 1598 | | .l0 1599 | | .clone() 1600 | | .into_iter() ... | 1606 | | }) 1607 | | .collect::<Vec<_>>(); | |____________________________________- here the type of `_vec_map` is inferred to be `Vec<bool>` 1608 | let v27: Vec<(bool, std::string::String)> = _vec_map; | -------------------------------- ^^^^^^^^ expected `Vec<(bool, String)>`, found `Vec<bool>` | | | expected due to this | = note: expected struct `Vec<(bool, std::string::String)>` found struct `Vec<bool>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:2492:17 | 2491 | let v5: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 2492 | Option::map(leptos::prelude::ArcLocalResource::get(&v0_1), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:2616:25 | 2616 | Option::map(leptos::prelude::ArcLocalResource::get(&v0_1), |x| x.clone()) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Result<Vec<Option<...>>, ...>>`, found `Option<SendWrapper<Result<..., ...>>>` | = note: expected enum `std::option::Option<std::result::Result<_, _>>` found enum `std::option::Option<send_wrapper::SendWrapper<std::result::Result<_, _>>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:3443:17 | 3442 | let v96: Option<Result<Vec<Option<string>>, std::string::String>> = | -------------------------------------------------------- expected due to this 3443 | Option::map(leptos::prelude::ArcLocalResource::get(&v2), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Result<Vec<Option<LrcStr>>, ...>>`, found `Option<SendWrapper<Result<..., ...>>>` | = note: expected enum `std::option::Option<std::result::Result<_, _>>` found enum `std::option::Option<send_wrapper::SendWrapper<std::result::Result<_, _>>>` error[E0277]: the trait bound `Submission<_, _, _>: From<ArcLocalResource<Arc<Rexie>>>` is not satisfied --> ui\src\dice_ui_wasm.rs:3837:66 | 3837 | leptos::prelude::Submission::pending(&v1.clone().into()).into(); | ^^^^ the trait `From<ArcLocalResource<Arc<Rexie>>>` is not implemented for `Submission<_, _, _>` | = help: the trait `From<ArcLocalResource<Arc<Rexie>>>` is not implemented for `Submission<_, _, _>` but trait `From<ArcSubmission<_, _>>` is implemented for `Submission<_, _, SyncStorage>` = help: for that trait implementation, expected `ArcSubmission<_, _>`, found `ArcLocalResource<Arc<Rexie>>` = note: required for `ArcLocalResource<Arc<Rexie>>` to implement `Into<Submission<_, _, _>>` help: consider removing this method call, as the receiver has type `ArcLocalResource<Arc<Rexie>>` and `ArcLocalResource<Arc<Rexie>>: From<ArcLocalResource<Arc<Rexie>>>` trivially holds | 3837 - leptos::prelude::Submission::pending(&v1.clone().into()).into(); 3837 + leptos::prelude::Submission::pending(&v1.into()).into(); | error[E0277]: the trait bound `ArcSignal<bool>: From<leptos::prelude::ReadSignal<bool>>` is not satisfied --> ui\src\dice_ui_wasm.rs:3837:74 | 3837 | leptos::prelude::Submission::pending(&v1.clone().into()).into(); | ^^^^ the trait `From<leptos::prelude::ReadSignal<bool>>` is not implemented for `ArcSignal<bool>` | = help: the following other types implement trait `From<T>`: `ArcSignal<T, S>` implements `From<ArcMemo<T, S>>` `ArcSignal<T, S>` implements `From<Signal<T, S>>` `ArcSignal<T>` implements `From<ArcReadSignal<T>>` `ArcSignal<T>` implements `From<ArcRwSignal<T>>` `ArcSignal<T>` implements `From<T>` = note: required for `leptos::prelude::ReadSignal<bool>` to implement `Into<ArcSignal<bool>>` error[E0277]: the trait bound `Submission<_, _, _>: From<ArcLocalResource<Result<Vec<...>, ...>>>` is not satisfied --> ui\src\dice_ui_wasm.rs:3840:66 | 3840 | leptos::prelude::Submission::pending(&v2.clone().into()).into(); | ^^^^ unsatisfied trait bound | = help: the trait `From<ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>>` is not implemented for `Submission<_, _, _>` but trait `From<ArcSubmission<_, _>>` is implemented for `Submission<_, _, SyncStorage>` = help: for that trait implementation, expected `ArcSubmission<_, _>`, found `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>` = note: required for `ArcLocalResource<Result<Vec<Option<Arc<Heap4>>>, String>>` to implement `Into<Submission<_, _, _>>` = note: the full name for the type has been written to 'C:\home\git\dice\target\wasm32-unknown-unknown\release\deps\dice_ui.long-type-15016053778481443864.txt' = note: consider using `--verbose` to print the full type name to the console help: consider removing this method call, as the receiver has type `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>` and `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>: From<ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>>` trivially holds | 3840 - leptos::prelude::Submission::pending(&v2.clone().into()).into(); 3840 + leptos::prelude::Submission::pending(&v2.into()).into(); | error[E0277]: the trait bound `ArcSignal<bool>: From<leptos::prelude::ReadSignal<bool>>` is not satisfied --> ui\src\dice_ui_wasm.rs:3840:74 | 3840 | leptos::prelude::Submission::pending(&v2.clone().into()).into(); | ^^^^ the trait `From<leptos::prelude::ReadSignal<bool>>` is not implemented for `ArcSignal<bool>` | = help: the following other types implement trait `From<T>`: `ArcSignal<T, S>` implements `From<ArcMemo<T, S>>` `ArcSignal<T, S>` implements `From<Signal<T, S>>` `ArcSignal<T>` implements `From<ArcReadSignal<T>>` `ArcSignal<T>` implements `From<ArcRwSignal<T>>` `ArcSignal<T>` implements `From<T>` = note: required for `leptos::prelude::ReadSignal<bool>` to implement `Into<ArcSignal<bool>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:3843:17 | 3842 | let v13: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 3843 | Option::map(leptos::prelude::ArcLocalResource::get(&v1), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:3846:17 | 3845 | let v37: Option<Result<Vec<Option<LrcPtr<Dice_ui::Heap4>>>, std::string::String>> = | ------------------------------------------------------------------------ expected due to this 3846 | Option::map(leptos::prelude::ArcLocalResource::get(&v2), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Result<Vec<Option<...>>, ...>>`, found `Option<SendWrapper<Result<..., ...>>>` | = note: expected enum `std::option::Option<std::result::Result<_, _>>` found enum `std::option::Option<send_wrapper::SendWrapper<std::result::Result<_, _>>>` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4169:23 | 4169 | let v127: leptos::prelude::ArcMemo< | _______________________^ 4170 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4171 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4169:23 | 4169 | let v127: leptos::prelude::ArcMemo< | _______________________^ 4170 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4171 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4169:23 | 4169 | let v127: leptos::prelude::ArcMemo< | _______________________^ 4170 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4171 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4169:23 | 4169 | let v127: leptos::prelude::ArcMemo< | _______________________^ 4170 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4171 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 4172 | | Func0::new({ 4173 | | let v124 = v124.clone(); 4174 | | move || Dice_ui::closure64(v124.clone(), ()) 4175 | | })() 4176 | | }); | |______________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 4172 | | Func0::new({ 4173 | | let v124 = v124.clone(); 4174 | | move || Dice_ui::closure64(v124.clone(), ()) 4175 | | })() 4176 | | }); | |______________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 4172 | | Func0::new({ 4173 | | let v124 = v124.clone(); 4174 | | move || Dice_ui::closure64(v124.clone(), ()) 4175 | | })() 4176 | | }); | |______________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4171:17 | 4171 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 4172 | | Func0::new({ 4173 | | let v124 = v124.clone(); 4174 | | move || Dice_ui::closure64(v124.clone(), ()) 4175 | | })() 4176 | | }); | |______________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:4181:21 | 4180 | let v132: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 4181 | / Option::map(leptos::prelude::ArcLocalResource::get(&v124.clone()), |x| { 4182 | | x.clone() 4183 | | }); | |______________________^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0599]: the method `clone` exists for struct `Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<...>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:4482:61 | 4482 | ... let v598 = v598.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<std::option::Option<Arc<Heap4>>, std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<dyn futures::Future<Output = std::result::Result<std::option::Option<Arc<Heap4>>, std::string::String>>>>>: Clone` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4774:35 | 4774 | let v894: std::pin::Pin< | ___________________________________^ 4775 | | Box< 4776 | | leptos::prelude::ArcMemo< 4777 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4778 | | >, 4779 | | >, 4780 | | > = Box::pin(v127); | |_________________________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4774:35 | 4774 | let v894: std::pin::Pin< | ___________________________________^ 4775 | | Box< 4776 | | leptos::prelude::ArcMemo< 4777 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4778 | | >, 4779 | | >, 4780 | | > = Box::pin(v127); | |_________________________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4774:35 | 4774 | let v894: std::pin::Pin< | ___________________________________^ 4775 | | Box< 4776 | | leptos::prelude::ArcMemo< 4777 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4778 | | >, 4779 | | >, 4780 | | > = Box::pin(v127); | |_________________________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4774:35 | 4774 | let v894: std::pin::Pin< | ___________________________________^ 4775 | | Box< 4776 | | leptos::prelude::ArcMemo< 4777 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 4778 | | >, 4779 | | >, 4780 | | > = Box::pin(v127); | |_________________________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4780:29 | 4780 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0599]: the method `clone` exists for struct `Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<...>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:4951:63 | 4951 | ... let v1083 = v1083.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<(), std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<dyn futures::Future<Output = std::result::Result<(), std::string::String>>>>>: Clone` error[E0599]: the method `clone` exists for struct `Func1<Arc<Heap4>, Pin<Box<dyn Future<Output = Result<Vec<()>, ...>>>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:5025:39 | 5025 | let v1139 = v1139.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<Arc<Heap4>, Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>>: Clone` error[E0277]: `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:5023:17 | 5023 | > = leptos::prelude::Action::new(move |value: &std::sync::Arc<Heap4>| { | _________________^ 5024 | | Func1::new({ 5025 | | let v1139 = v1139.clone(); 5026 | | move |v_1: LrcPtr<Dice_ui::Heap4>| Dice_ui::closure77(v1139.clone(), v_1) 5027 | | })(value.clone()) 5028 | | }); | |______________^ `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` = note: required for `Unique<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>` to implement `std::marker::Send` note: required because it appears within the type `Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:12 | 1089 | pub struct Pin<Ptr> { | ^^^ note: required by a bound in `leptos::prelude::Action::<I, O>::new` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\actions\action.rs:655:34 | 652 | pub fn new<F, Fu>(action_fn: F) -> Self | --- required by a bound in this associated function ... 655 | Fu: Future<Output = O> + Send + 'static, | ^^^^ required by this bound in `Action::<I, O>::new` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::GetUntracked` is implemented for `std::option::Option<T>` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::GetUntracked` is implemented for `std::option::Option<T>` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:4782:29 | 4782 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:8191:17 | 8190 | let v96: Option<Result<Vec<Option<string>>, std::string::String>> = | -------------------------------------------------------- expected due to this 8191 | Option::map(leptos::prelude::ArcLocalResource::get(&v2), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Result<Vec<Option<LrcStr>>, ...>>`, found `Option<SendWrapper<Result<..., ...>>>` | = note: expected enum `std::option::Option<std::result::Result<_, _>>` found enum `std::option::Option<send_wrapper::SendWrapper<std::result::Result<_, _>>>` error[E0277]: the trait bound `Submission<_, _, _>: From<ArcLocalResource<Arc<Rexie>>>` is not satisfied --> ui\src\dice_ui_wasm.rs:9063:66 | 9063 | leptos::prelude::Submission::pending(&v1.clone().into()).into(); | ^^^^ the trait `From<ArcLocalResource<Arc<Rexie>>>` is not implemented for `Submission<_, _, _>` | = help: the trait `From<ArcLocalResource<Arc<Rexie>>>` is not implemented for `Submission<_, _, _>` but trait `From<ArcSubmission<_, _>>` is implemented for `Submission<_, _, SyncStorage>` = help: for that trait implementation, expected `ArcSubmission<_, _>`, found `ArcLocalResource<Arc<Rexie>>` = note: required for `ArcLocalResource<Arc<Rexie>>` to implement `Into<Submission<_, _, _>>` help: consider removing this method call, as the receiver has type `ArcLocalResource<Arc<Rexie>>` and `ArcLocalResource<Arc<Rexie>>: From<ArcLocalResource<Arc<Rexie>>>` trivially holds | 9063 - leptos::prelude::Submission::pending(&v1.clone().into()).into(); 9063 + leptos::prelude::Submission::pending(&v1.into()).into(); | error[E0277]: the trait bound `ArcSignal<bool>: From<leptos::prelude::ReadSignal<bool>>` is not satisfied --> ui\src\dice_ui_wasm.rs:9063:74 | 9063 | leptos::prelude::Submission::pending(&v1.clone().into()).into(); | ^^^^ the trait `From<leptos::prelude::ReadSignal<bool>>` is not implemented for `ArcSignal<bool>` | = help: the following other types implement trait `From<T>`: `ArcSignal<T, S>` implements `From<ArcMemo<T, S>>` `ArcSignal<T, S>` implements `From<Signal<T, S>>` `ArcSignal<T>` implements `From<ArcReadSignal<T>>` `ArcSignal<T>` implements `From<ArcRwSignal<T>>` `ArcSignal<T>` implements `From<T>` = note: required for `leptos::prelude::ReadSignal<bool>` to implement `Into<ArcSignal<bool>>` error[E0277]: the trait bound `Submission<_, _, _>: From<ArcLocalResource<Result<Vec<...>, ...>>>` is not satisfied --> ui\src\dice_ui_wasm.rs:9066:66 | 9066 | leptos::prelude::Submission::pending(&v2.clone().into()).into(); | ^^^^ unsatisfied trait bound | = help: the trait `From<ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>>` is not implemented for `Submission<_, _, _>` but trait `From<ArcSubmission<_, _>>` is implemented for `Submission<_, _, SyncStorage>` = help: for that trait implementation, expected `ArcSubmission<_, _>`, found `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>` = note: required for `ArcLocalResource<Result<Vec<Option<Arc<Heap4>>>, String>>` to implement `Into<Submission<_, _, _>>` = note: the full name for the type has been written to 'C:\home\git\dice\target\wasm32-unknown-unknown\release\deps\dice_ui.long-type-15016053778481443864.txt' = note: consider using `--verbose` to print the full type name to the console help: consider removing this method call, as the receiver has type `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>` and `ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>: From<ArcLocalResource<std::result::Result<Vec<std::option::Option<Arc<Heap4>>>, std::string::String>>>` trivially holds | 9066 - leptos::prelude::Submission::pending(&v2.clone().into()).into(); 9066 + leptos::prelude::Submission::pending(&v2.into()).into(); | error[E0277]: the trait bound `ArcSignal<bool>: From<leptos::prelude::ReadSignal<bool>>` is not satisfied --> ui\src\dice_ui_wasm.rs:9066:74 | 9066 | leptos::prelude::Submission::pending(&v2.clone().into()).into(); | ^^^^ the trait `From<leptos::prelude::ReadSignal<bool>>` is not implemented for `ArcSignal<bool>` | = help: the following other types implement trait `From<T>`: `ArcSignal<T, S>` implements `From<ArcMemo<T, S>>` `ArcSignal<T, S>` implements `From<Signal<T, S>>` `ArcSignal<T>` implements `From<ArcReadSignal<T>>` `ArcSignal<T>` implements `From<ArcRwSignal<T>>` `ArcSignal<T>` implements `From<T>` = note: required for `leptos::prelude::ReadSignal<bool>` to implement `Into<ArcSignal<bool>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:9069:17 | 9068 | let v13: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 9069 | Option::map(leptos::prelude::ArcLocalResource::get(&v1), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:9072:17 | 9071 | let v37: Option<Result<Vec<Option<LrcPtr<Dice_ui::Heap4>>>, std::string::String>> = | ------------------------------------------------------------------------ expected due to this 9072 | Option::map(leptos::prelude::ArcLocalResource::get(&v2), |x| x.clone()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<Result<Vec<Option<...>>, ...>>`, found `Option<SendWrapper<Result<..., ...>>>` | = note: expected enum `std::option::Option<std::result::Result<_, _>>` found enum `std::option::Option<send_wrapper::SendWrapper<std::result::Result<_, _>>>` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9577:23 | 9577 | let v127: leptos::prelude::ArcMemo< | _______________________^ 9578 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 9579 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9577:23 | 9577 | let v127: leptos::prelude::ArcMemo< | _______________________^ 9578 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 9579 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9577:23 | 9577 | let v127: leptos::prelude::ArcMemo< | _______________________^ 9578 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 9579 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9577:23 | 9577 | let v127: leptos::prelude::ArcMemo< | _______________________^ 9578 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 9579 | | > = leptos::prelude::ArcMemo::new(move |_| { | |_____________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 9580 | | Func0::new({ 9581 | | let v124 = v124.clone(); 9582 | | move || Dice_ui::closure64(v124.clone(), ()) 9583 | | })() 9584 | | }); | |______________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 9580 | | Func0::new({ 9581 | | let v124 = v124.clone(); 9582 | | move || Dice_ui::closure64(v124.clone(), ()) 9583 | | })() 9584 | | }); | |______________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 9580 | | Func0::new({ 9581 | | let v124 = v124.clone(); 9582 | | move || Dice_ui::closure64(v124.clone(), ()) 9583 | | })() 9584 | | }); | |______________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:9579:17 | 9579 | > = leptos::prelude::ArcMemo::new(move |_| { | _________________^ 9580 | | Func0::new({ 9581 | | let v124 = v124.clone(); 9582 | | move || Dice_ui::closure64(v124.clone(), ()) 9583 | | })() 9584 | | }); | |______________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:9589:21 | 9588 | let v132: Option<std::sync::Arc<rexie::Rexie>> = | ------------------------------------ expected due to this 9589 | / Option::map(leptos::prelude::ArcLocalResource::get(&v124.clone()), |x| { 9590 | | x.clone() 9591 | | }); | |______________________^ expected `Option<Arc<Rexie>>`, found `Option<SendWrapper<Arc<Rexie>>>` | = note: expected enum `std::option::Option<Arc<_>>` found enum `std::option::Option<send_wrapper::SendWrapper<Arc<_>>>` error[E0599]: the method `clone` exists for struct `Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<...>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:9890:61 | 9890 | ... let v598 = v598.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<std::option::Option<Arc<Heap4>>, std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<dyn futures::Future<Output = std::result::Result<std::option::Option<Arc<Heap4>>, std::string::String>>>>>: Clone` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10182:35 | 10182 | let v894: std::pin::Pin< | ___________________________________^ 10183 | | Box< 10184 | | leptos::prelude::ArcMemo< 10185 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 10186 | | >, 10187 | | >, 10188 | | > = Box::pin(v127); | |_________________________^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10182:35 | 10182 | let v894: std::pin::Pin< | ___________________________________^ 10183 | | Box< 10184 | | leptos::prelude::ArcMemo< 10185 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 10186 | | >, 10187 | | >, 10188 | | > = Box::pin(v127); | |_________________________^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10182:35 | 10182 | let v894: std::pin::Pin< | ___________________________________^ 10183 | | Box< 10184 | | leptos::prelude::ArcMemo< 10185 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 10186 | | >, 10187 | | >, 10188 | | > = Box::pin(v127); | |_________________________^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10182:35 | 10182 | let v894: std::pin::Pin< | ___________________________________^ 10183 | | Box< 10184 | | leptos::prelude::ArcMemo< 10185 | | Option<PartialEqWrapper<std::sync::Arc<rexie::Rexie>>>, 10186 | | >, 10187 | | >, 10188 | | > = Box::pin(v127); | |_________________________^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10188:29 | 10188 | > = Box::pin(v127); | ^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::Storage<T>` is implemented for `SyncStorage` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` note: required by a bound in `ArcMemo` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\computed\arc_memo.rs:94:8 | 92 | pub struct ArcMemo<T, S = SyncStorage> | ------- required by a bound in this struct 93 | where 94 | S: Storage<T>, | ^^^^^^^^^^ required by this bound in `ArcMemo` error[E0599]: the method `clone` exists for struct `Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<...>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:10359:63 | 10359 | ... let v1083 = v1083.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<(), std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<(LrcStr, US23, LrcStr, bool, bool), Pin<Box<dyn futures::Future<Output = std::result::Result<(), std::string::String>>>>>: Clone` error[E0599]: the method `clone` exists for struct `Func1<Arc<Heap4>, Pin<Box<dyn Future<Output = Result<Vec<()>, ...>>>>>`, but its trait bounds were not satisfied --> ui\src\dice_ui_wasm.rs:10433:39 | 10433 | let v1139 = v1139.clone(); | ^^^^^ | ::: C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:1 | 1089 | pub struct Pin<Ptr> { | ------------------- doesn't satisfy `_: Clone` | ::: C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust\src\FuncType.rs:116:1 | 116 | func!(Func1, T1); | ---------------- doesn't satisfy `_: Clone` | = note: the following trait bounds were not satisfied: `Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>: Clone` which is required by `fable_library_rust::Native_::Func1<Arc<Heap4>, Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>>: Clone` error[E0277]: `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10431:17 | 10431 | > = leptos::prelude::Action::new(move |value: &std::sync::Arc<Heap4>| { | _________________^ 10432 | | Func1::new({ 10433 | | let v1139 = v1139.clone(); 10434 | | move |v_1: LrcPtr<Dice_ui::Heap4>| Dice_ui::closure77(v1139.clone(), v_1) 10435 | | })(value.clone()) 10436 | | }); | |______________^ `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>` = note: required for `Unique<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>` to implement `std::marker::Send` note: required because it appears within the type `Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `Pin<Box<dyn futures::Future<Output = std::result::Result<Vec<()>, std::string::String>>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/pin.rs:1089:12 | 1089 | pub struct Pin<Ptr> { | ^^^ note: required by a bound in `leptos::prelude::Action::<I, O>::new` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\reactive_graph-0.1.0\src\actions\action.rs:655:34 | 652 | pub fn new<F, Fu>(action_fn: F) -> Self | --- required by a bound in this associated function ... 655 | Fu: Future<Output = O> + Send + 'static, | ^^^^ required by this bound in `Action::<I, O>::new` error[E0277]: `*mut u8` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be shared between threads safely | = help: within `Rexie`, the trait `std::marker::Sync` is not implemented for `*mut u8` = help: the trait `leptos::prelude::GetUntracked` is implemented for `std::option::Option<T>` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be shared between threads safely | = help: the trait `std::marker::Sync` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Sync` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `*mut u8` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*mut u8` cannot be sent between threads safely | = help: within `Rexie`, the trait `std::marker::Send` is not implemented for `*mut u8` = help: the trait `leptos::prelude::GetUntracked` is implemented for `std::option::Option<T>` note: required because it appears within the type `PhantomData<*mut u8>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/marker.rs:774:12 | 774 | pub struct PhantomData<T: ?Sized>; | ^^^^^^^^^^^ note: required because it appears within the type `wasm_bindgen::JsValue` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\lib.rs:93:12 | 93 | pub struct JsValue { | ^^^^^^^ note: required because it appears within the type `js_sys::Object` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\js-sys-0.3.72\src\lib.rs:3431:14 | 3431 | pub type Object; | ^^^^^^ note: required because it appears within the type `EventTarget` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_EventTarget.rs:14:14 | 14 | pub type EventTarget; | ^^^^^^^^^^^ note: required because it appears within the type `IdbDatabase` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\web-sys-0.3.72\src\features\gen_IdbDatabase.rs:14:14 | 14 | pub type IdbDatabase; | ^^^^^^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0277]: `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely --> ui\src\dice_ui_wasm.rs:10190:29 | 10190 | ... leptos::prelude::ArcMemo::get_untracked(&v894); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn FnMut(Event) + 'static)` cannot be sent between threads safely | = help: the trait `std::marker::Send` is not implemented for `(dyn FnMut(Event) + 'static)` = note: required for `Unique<(dyn FnMut(Event) + 'static)>` to implement `std::marker::Send` note: required because it appears within the type `Box<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/alloc/src/boxed.rs:231:12 | 231 | pub struct Box< | ^^^ note: required because it appears within the type `ManuallyDrop<Box<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/mem/manually_drop.rs:157:12 | 157 | pub struct ManuallyDrop<T: ?Sized> { | ^^^^^^^^^^^^ note: required because it appears within the type `Closure<(dyn FnMut(Event) + 'static)>` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wasm-bindgen-0.2.95\src\closure.rs:242:12 | 242 | pub struct Closure<T: ?Sized> { | ^^^^^^^ note: required because it appears within the type `std::option::Option<Closure<(dyn FnMut(Event) + 'static)>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ note: required because it appears within the type `idb::database::Database` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\idb-0.6.4\src\database.rs:17:12 | 17 | pub struct Database { | ^^^^^^^^ note: required because it appears within the type `Rexie` --> C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rexie-0.6.2\src\rexie.rs:7:12 | 7 | pub struct Rexie { | ^^^^^ = note: required for `Arc<Rexie>` to implement `std::marker::Send` note: required because it appears within the type `PartialEqWrapper<Arc<Rexie>>` --> ui\src\dice_ui_wasm.rs:1214:20 | 1214 | pub struct PartialEqWrapper<T>(T); /*; | ^^^^^^^^^^^^^^^^ note: required because it appears within the type `std::option::Option<PartialEqWrapper<Arc<Rexie>>>` --> C:\Users\i574n\scoop\persist\rustup\.rustup\toolchains\nightly-2025-02-22-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library/core/src/option.rs:572:10 | 572 | pub enum Option<T> { | ^^^^^^ = note: required for `SyncStorage` to implement `leptos::prelude::Storage<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `ReadUntracked` = note: required for `ArcMemo<std::option::Option<PartialEqWrapper<Arc<Rexie>>>>` to implement `leptos::prelude::GetUntracked` error[E0425]: cannot find function `v804` in this scope --> ui\src\dice_ui_wasm.rs:12589:95 | 12589 | ... leptos::prelude::view! { <leptos::prelude::For children=move |x| v804(x) let:x key=move |x| v266(x.to_owned()) each=v252 /> }, | ^^^^ help: a local variable with a similar name exists: `v800` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:13083:56 | 13083 | let v535: Func1<std::string::String, ()> = _func1_from_v481; | ------------------------------ ^^^^^^^^^^^^^^^^ expected `Func1<String, ()>`, found `Func0<()>` | | | expected due to this | = note: expected struct `fable_library_rust::Native_::Func1<std::string::String, ()>` found struct `fable_library_rust::Native_::Func0<()>` error[E0425]: cannot find function `v541` in this scope --> ui\src\dice_ui_wasm.rs:13093:180 | 13093 | ...ove |event: web_sys::KeyboardEvent| v541(leptos::prelude::event_target_value(&event)) prop:value=move || v480() class=move || "bg-gray... | ^^^^ help: a local variable with a similar name exists: `v341` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:17034:53 | 17034 | let v428: std::string::String = value; | ------------------- ^^^^^ expected `String`, found `(i32, i32, ReadSignal<Arc<(bool, ...)>>)` | | | expected due to this | = note: expected struct `std::string::String` found tuple `(i32, i32, leptos::prelude::ReadSignal<Arc<(bool, std::string::String)>>)` error[E0308]: mismatched types --> ui\src\dice_ui_wasm.rs:17069:60 | 17069 | let v462: Func1<std::string::String, ()> = _func1_from_v424; | ------------------------------ ^^^^^^^^^^^^^^^^ expected `Func1<String, ()>`, found `Func0<()>` | | | expected due to this | = note: expected struct `fable_library_rust::Native_::Func1<std::string::String, ()>` found struct `fable_library_rust::Native_::Func0<()>` error[E0425]: cannot find function `v468` in this scope --> ui\src\dice_ui_wasm.rs:17081:100 | 17081 | ...ove |event: web_sys::KeyboardEvent| v468(leptos::prelude::event_target_value(&event)) prop:value=move || v423() class=move || "bg-gray... | ^^^^ help: a local variable with a similar name exists: `v368` error[E0425]: cannot find function `v634` in this scope --> ui\src\dice_ui_wasm.rs:17284:83 | 17284 | leptos::prelude::view! { <leptos::prelude::For children=move |x| v634(x) let:x key=move |x| v28(x.to_owned()) each=v9 /> }, | ^^^^ help: a local variable with a similar name exists: `v630` error[E0507]: cannot move out of `v11`, a captured variable in an `Fn` closure --> ui\src\dice_ui_wasm.rs:1781:55 | 1775 | let v11: LrcPtr<Dice_ui::Heap0> = leptos::prelude::ArcRwSignal::get_untracked(&v9); | --- captured outer variable ... 1778 | let _func1_from_v14 = Func1::from(move |value| { | ------------ captured by this `Fn` closure ... 1781 | let v19: Vec<i32> = Dice_ui::method58(v11); | ^^^ move occurs because `v11` has type `Arc<module_9c940d83::Dice_ui::Heap0>`, which does not implement the `Copy` trait error[E0382]: use of moved value: `v18` --> ui\src\dice_ui_wasm.rs:1819:18 | 1780 | let v18: string = value; | --- move occurs because `v18` has type `LrcStr`, which does not implement the `Copy` trait ... 1783 | let _func1_from_v20 = Func1::from(move |value| { | ------------ value moved into closure here ... 1792 | (v18.clone()), | --- variable moved due to use in closure ... 1819 | (v18, v38) /*; | ^^^ value used here after move Some errors have detailed explanations: E0121, E0277, E0282, E0308, E0382, E0425, E0433, E0507, E0599... For more information about an error, try `rustc --explain E0121`. warning: `dice_ui` (lib) generated 76 warnings error: could not compile `dice_ui` (lib) due to 156 previous errors; 76 warnings emitted 2025-03-05T22:16:15.992403Z ERROR ❌ error error from build pipeline Caused by: 0: HTML build pipeline failed (1 errors), showing first 1: error from asset pipeline 2: running cargo build 3: error during cargo build execution 4: cargo call to executable 'cargo' with args: '["build", "--target=wasm32-unknown-unknown", "--manifest-path", "C:\\home\\git\\dice\\ui\\Cargo.toml", "--release"]' returned a bad status: exit code: 101 2025-03-05T22:16:15.992484Z ERROR error from build pipeline 2025-03-05T22:16:15.992489Z INFO 1: HTML build pipeline failed (1 errors), showing first 2025-03-05T22:16:15.992499Z INFO 2: error from asset pipeline 2025-03-05T22:16:15.992502Z INFO 3: running cargo build 2025-03-05T22:16:15.992504Z INFO 4: error during cargo build execution 2025-03-05T22:16:15.992507Z INFO 5: cargo call to executable 'cargo' with args: '["build", "--target=wasm32-unknown-unknown", "--manifest-path", "C:\\home\\git\\dice\\ui\\Cargo.toml", "--release"]' returned a bad status: exit code: 101 # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\ui / $OnError: Stop / $exitcode: 1 / $Error: '' / $ScriptBlock: 'trunk build $($fast ? $() : '--release') --dist="$targetDir/trunk" --public-url="./" --no-sri' # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Stop / $exitcode: 1 / $Error: '' / $ScriptBlock: 'pwsh ../ui/build.ps1 -fast $($fast ?? '')' # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\i574n.github\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'pwsh ../../dice/scripts/build.ps1'
In [ ]:
{ pwsh outdated.ps1 } | Invoke-Block
CheckToml / toml: C:\home\git\spiral\workspace\Cargo.toml spiral_wasm ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 Removed --- Normal --- android-tzdata 0.1.1 Removed --- Normal cfg(target_os = "android") android_system_properties 0.1.5 Removed --- Normal cfg(target_os = "android") autocfg 1.4.0 Removed --- Build --- bumpalo 3.16.0 Removed --- Normal --- cc 1.2.7 Removed --- Build --- cfg-if 1.0.0 Removed --- Normal --- chrono 0.4.39 Removed --- Normal --- core-foundation-sys 0.8.7 Removed --- Normal cfg(any(target_os = "macos", target_os = "ios")) equivalent 1.0.1 --- Removed Normal --- getrandom 0.2.15 Removed --- Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 0.15.2 --- Normal --- hashbrown 0.15.2 --- 0.12.3 Normal --- iana-time-zone 0.1.61 Removed --- Normal cfg(unix) iana-time-zone-haiku 0.1.2 Removed --- Normal cfg(target_os = "haiku") indexmap 1.9.3 2.7.0 --- Normal --- indexmap 2.7.0 --- 1.9.3 Normal --- jobserver 0.1.32 Removed --- Normal --- js-sys 0.3.76 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) libc 0.2.169 Removed --- Normal --- libc 0.2.169 Removed --- Normal cfg(unix) log 0.4.22 Removed --- Normal --- near-sandbox-utils 0.8.0 0.9.0 --- Build --- near-sandbox-utils 0.9.0 --- 0.8.0 Normal --- num-traits 0.2.19 Removed --- Normal --- once_cell 1.20.2 Removed --- Normal --- once_cell 1.20.2 Removed --- Normal cfg(not(all(target_arch = "arm", target_os = "none"))) proc-macro2 1.0.92 Removed --- Normal --- quote 1.0.38 Removed --- Normal --- serde 1.0.217 Removed --- Normal --- serde_derive 1.0.217 Removed --- Normal --- shlex 1.3.0 Removed --- Normal --- syn 2.0.94 Removed --- Normal --- unicode-ident 1.0.14 Removed --- Normal --- version_check 0.9.5 Removed --- Build --- wasi 0.11.0+wasi-snapshot-preview1 Removed --- Normal cfg(target_os = "wasi") wasm-bindgen 0.2.99 Removed --- Normal --- wasm-bindgen 0.2.99 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) wasm-bindgen-backend 0.2.99 Removed --- Normal --- wasm-bindgen-macro 0.2.99 Removed --- Normal --- wasm-bindgen-macro-support 0.2.99 Removed --- Normal --- wasm-bindgen-shared 0.2.99 Removed --- Normal --- windows-core 0.52.0 Removed --- Normal cfg(target_os = "windows") windows-targets 0.52.6 Removed --- Normal --- windows-targets 0.52.6 Removed --- Normal cfg(windows) windows_aarch64_gnullvm 0.52.6 Removed --- Normal aarch64-pc-windows-gnullvm windows_aarch64_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) windows_i686_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_i686_gnullvm 0.52.6 Removed --- Normal i686-pc-windows-gnullvm windows_i686_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) windows_x86_64_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_x86_64_gnullvm 0.52.6 Removed --- Normal x86_64-pc-windows-gnullvm windows_x86_64_msvc 0.52.6 Removed --- Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) CheckToml / toml: C:\home\git\spiral\apps\spiral\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 Resolving dependency graph... Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in System.Management 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Features 10.0.0-preview.1.25120.3, please tell the package authors Could not detect any platforms from 'net10.0' in System.IO.Pipelines 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Options 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.Net.ServerSentEvents 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.Text.Json 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.Threading.Channels 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.CodeDom 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.Diagnostics.DiagnosticSource 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Primitives 10.0.0-preview.1.25080.5, please tell the package authors Could not detect any platforms from 'net10.0' in System.Text.Encodings.Web 10.0.0-preview.1.25080.5, please tell the package authors Outdated packages found: Group: Main * Argu 6.2.4 -> 6.2.5 * Expecto 11.0.0-alpha6 -> 11.0.0-alpha8 * Expecto.FsCheck 11.0.0-alpha6 -> 11.0.0-alpha8-fscheck2 * Fable.Core 4.3 -> 4.5.0 * FsCheck 3.0.1 -> 2.16.6 * FSharp.Core 9.0.201 -> 9.0.300-beta.25079.4 * Microsoft.AspNetCore.App.Ref 9.0.2 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.SignalR.Client 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.SignalR.Common 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.Bcl.AsyncInterfaces 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.DependencyInjection 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.DependencyInjection.Abstractions 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.Features 7.0 -> 10.0.0-preview.1.25120.3 * Microsoft.Extensions.Logging 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.Logging.Abstractions 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.Options 9.0.2 -> 10.0.0-preview.1.25080.5 * Microsoft.Extensions.Primitives 9.0.2 -> 10.0.0-preview.1.25080.5 * System.CodeDom 9.0.2 -> 10.0.0-preview.1.25080.5 * System.IO.Pipelines 9.0.2 -> 10.0.0-preview.1.25080.5 * System.Management 7.0 -> 10.0.0-preview.1.25080.5 * System.Threading.Channels 9.0.2 -> 10.0.0-preview.1.25080.5 Total time taken: 43 seconds Paket omitted 24 warnings. You can see them in verbose mode. CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml chat_contract_tests ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 Removed Removed Normal --- autocfg 1.4.0 Removed Removed Build --- bumpalo 3.16.0 Removed Removed Normal --- cfg-if 1.0.0 Removed Removed Normal --- getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 0.15.2 0.15.2 Normal --- indexmap 1.9.3 2.7.0 2.7.0 Normal --- js-sys 0.3.76 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) libc 0.2.168 Removed Removed Normal cfg(unix) log 0.4.22 Removed Removed Normal --- near-sandbox-utils 0.9.0 0.8.0 0.8.0 Normal --- once_cell 1.20.2 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none"))) proc-macro2 1.0.92 Removed Removed Normal --- quote 1.0.37 Removed Removed Normal --- syn 2.0.90 Removed Removed Normal --- unicode-ident 1.0.14 Removed Removed Normal --- version_check 0.9.5 Removed Removed Build --- wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi") wasm-bindgen 0.2.99 Removed Removed Normal --- wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) wasm-bindgen-backend 0.2.99 Removed Removed Normal --- wasm-bindgen-macro 0.2.99 Removed Removed Normal --- wasm-bindgen-macro-support 0.2.99 Removed Removed Normal --- wasm-bindgen-shared 0.2.99 Removed Removed Normal --- CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckJson / json: C:/home/git/polyglot $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.15 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/ipfs $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\ipfs\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.15 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/spiral/temp/extension $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\spiral\temp\extension\package.json @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-05 @types/chrome ~0.0.268 → ~0.0.308 npm-check-updates ~17.1.14 → ~17.1.15 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\spiral\vscode\package.json @types/node ~22.10 → ~22.13 @types/vscode ~1.96 → ~1.98 npm-check-updates ~17.1.14 → ~17.1.15 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin $ npm-check-updates --target greatest Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS Code Plugin\package.json @microsoft/signalr 8.0.0 → 8.0.7 @types/node ~22.10 → ~22.13 @types/vscode ~1.95 → ~1.98 esbuild ~0.24 → ~0.25 npm-check-updates ~17.1.14 → ~17.1.15 portfinder ^1.0.32 → ^1.0.33 Run ncu --target greatest -u to upgrade package.json CheckToml / toml: C:\home\git\dice\Cargo.toml / _args: -w warning: Feature js of package getrandom has been obsolete in version 0.3.1 warning: Feature js of package getrandom has been obsolete in version 0.3.1 dice_contract ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- dice_contract_lib ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- fable_library_rust ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 Removed Removed Normal --- aho-corasick 1.1.3 Removed Removed Normal --- allocator-api2 0.2.20 Removed Removed Normal --- arrayvec 0.7.6 Removed Removed Normal --- autocfg 1.4.0 Removed Removed Build --- bitvec 1.0.1 Removed Removed Normal --- borsh 1.5.3 Removed Removed Normal --- borsh-derive 1.5.3 Removed Removed Normal --- bumpalo 3.16.0 Removed Removed Normal --- bytecheck 0.6.12 Removed Removed Normal --- bytecheck_derive 0.6.12 Removed Removed Normal --- byteorder 1.5.0 Removed Removed Normal --- bytes 1.8.0 Removed Removed Normal --- cfg-if 1.0.0 Removed Removed Normal --- cfg_aliases 0.2.1 Removed Removed Build --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- funty 2.0.0 Removed Removed Normal --- getrandom 0.2.15 Removed Removed Normal --- getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 Removed Removed Normal --- hashbrown 0.15.1 Removed Removed Normal --- indexmap 2.6.0 Removed Removed Normal --- itoa 1.0.11 Removed Removed Normal --- js-sys 0.3.72 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) libc 0.2.162 Removed Removed Normal cfg(unix) log 0.4.22 Removed Removed Normal --- memchr 2.7.4 Removed Removed Normal --- num-bigint 0.4.6 Removed Removed Normal --- num-integer 0.1.46 Removed Removed Normal --- num-traits 0.2.19 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none"))) ppv-lite86 0.2.20 Removed Removed Normal --- proc-macro-crate 3.2.0 Removed Removed Normal --- proc-macro2 1.0.89 Removed Removed Normal --- ptr_meta 0.1.4 Removed Removed Normal --- ptr_meta_derive 0.1.4 Removed Removed Normal --- quote 1.0.37 Removed Removed Normal --- radium 0.7.0 Removed Removed Normal --- rand 0.8.5 Removed Removed Normal --- rand_chacha 0.3.1 Removed Removed Normal --- rand_core 0.6.4 Removed Removed Normal --- regex 1.11.1 Removed Removed Normal --- regex-automata 0.4.9 Removed Removed Normal --- regex-syntax 0.8.5 Removed Removed Normal --- rend 0.4.2 Removed Removed Normal --- rkyv 0.7.45 Removed Removed Normal --- rkyv_derive 0.7.45 Removed Removed Normal --- rust_decimal 1.36.0 Removed Removed Normal --- ryu 1.0.18 Removed Removed Normal --- seahash 4.1.0 Removed Removed Normal --- serde 1.0.215 Removed Removed Normal --- serde_derive 1.0.215 Removed Removed Normal --- serde_json 1.0.132 Removed Removed Normal --- serde_spanned 0.6.8 Removed Removed Normal --- simdutf8 0.1.5 Removed Removed Normal --- syn 1.0.109 Removed Removed Normal --- syn 2.0.87 Removed Removed Normal --- tap 1.0.1 Removed Removed Normal --- tinyvec 1.8.0 Removed Removed Normal --- tinyvec_macros 0.1.1 Removed Removed Normal --- toml_datetime 0.6.8 Removed Removed Normal --- toml_edit 0.22.22 Removed Removed Normal --- unicode-ident 1.0.13 Removed Removed Normal --- uuid 1.11.0 Removed Removed Normal --- version_check 0.9.5 Removed Removed Build --- wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi") wasm-bindgen 0.2.95 Removed Removed Normal --- wasm-bindgen 0.2.95 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) wasm-bindgen-backend 0.2.95 Removed Removed Normal --- wasm-bindgen-macro 0.2.95 Removed Removed Normal --- wasm-bindgen-macro-support 0.2.95 Removed Removed Normal --- wasm-bindgen-shared 0.2.95 Removed Removed Normal --- winnow 0.6.20 Removed Removed Normal --- wyz 0.5.1 Removed Removed Normal --- zerocopy 0.7.35 Removed Removed Normal --- zerocopy-derive 0.7.35 Removed Removed Normal --- dice_contract_tests ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 --- Removed Normal --- allocator-api2 0.2.20 Removed Removed Normal --- android-tzdata 0.1.1 Removed Removed Normal cfg(target_os = "android") android_system_properties 0.1.5 Removed Removed Normal cfg(target_os = "android") autocfg 1.4.0 --- Removed Build --- autocfg 1.4.0 Removed Removed Build --- bumpalo 3.16.0 --- Removed Normal --- bumpalo 3.16.0 Removed Removed Normal --- cc 1.2.1 Removed Removed Build --- cfg-if 1.0.0 --- Removed Normal --- cfg-if 1.0.0 Removed Removed Normal --- chrono 0.4.38 Removed Removed Normal --- core-foundation-sys 0.8.7 Removed Removed Normal cfg(any(target_os = "macos", target_os = "ios")) equivalent 1.0.1 Removed --- Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- getrandom 0.2.15 --- Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 --- 0.15.1 Normal --- hashbrown 0.15.1 0.12.3 --- Normal --- iana-time-zone 0.1.61 Removed Removed Normal cfg(unix) iana-time-zone-haiku 0.1.2 Removed Removed Normal cfg(target_os = "haiku") indexmap 1.9.3 --- 2.6.0 Normal --- indexmap 2.6.0 1.9.3 --- Normal --- jobserver 0.1.32 Removed Removed Normal --- js-sys 0.3.72 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) js-sys 0.3.72 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) js-sys 0.3.72 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) libc 0.2.162 --- Removed Normal cfg(unix) libc 0.2.162 Removed Removed Normal --- libc 0.2.162 Removed Removed Normal cfg(unix) log 0.4.22 --- Removed Normal --- log 0.4.22 Removed Removed Normal --- near-sandbox-utils 0.8.0 0.9.0 0.9.0 Build --- num-traits 0.2.19 Removed Removed Normal --- once_cell 1.20.2 --- Removed Normal --- once_cell 1.20.2 --- Removed Normal cfg(not(all(target_arch = "arm", target_os = "none"))) once_cell 1.20.2 Removed Removed Normal --- proc-macro2 1.0.89 --- Removed Normal --- proc-macro2 1.0.89 Removed Removed Normal --- quote 1.0.37 --- Removed Normal --- quote 1.0.37 Removed Removed Normal --- serde 1.0.215 Removed Removed Normal --- serde_derive 1.0.215 Removed Removed Normal --- shlex 1.3.0 Removed Removed Normal --- syn 2.0.87 --- Removed Normal --- syn 2.0.87 Removed Removed Normal --- unicode-ident 1.0.13 --- Removed Normal --- unicode-ident 1.0.13 Removed Removed Normal --- version_check 0.9.5 --- Removed Build --- wasi 0.11.0+wasi-snapshot-preview1 --- Removed Normal cfg(target_os = "wasi") wasm-bindgen 0.2.95 --- Removed Normal --- wasm-bindgen 0.2.95 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) wasm-bindgen 0.2.95 Removed Removed Normal --- wasm-bindgen 0.2.95 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) wasm-bindgen 0.2.95 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) wasm-bindgen-backend 0.2.95 --- Removed Normal --- wasm-bindgen-backend 0.2.95 Removed Removed Normal --- wasm-bindgen-macro 0.2.95 --- Removed Normal --- wasm-bindgen-macro 0.2.95 Removed Removed Normal --- wasm-bindgen-macro-support 0.2.95 --- Removed Normal --- wasm-bindgen-macro-support 0.2.95 Removed Removed Normal --- wasm-bindgen-shared 0.2.95 --- Removed Normal --- wasm-bindgen-shared 0.2.95 Removed Removed Normal --- windows-core 0.52.0 Removed Removed Normal cfg(target_os = "windows") windows-targets 0.52.6 Removed Removed Normal --- windows-targets 0.52.6 Removed Removed Normal cfg(windows) windows_aarch64_gnullvm 0.52.6 Removed Removed Normal aarch64-pc-windows-gnullvm windows_aarch64_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) windows_i686_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_i686_gnullvm 0.52.6 Removed Removed Normal i686-pc-windows-gnullvm windows_i686_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) windows_x86_64_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_x86_64_gnullvm 0.52.6 Removed Removed Normal x86_64-pc-windows-gnullvm windows_x86_64_msvc 0.52.6 Removed Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) dice_ui ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- CheckToml / toml: C:\home\git\dice\lib\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\lib\contract\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\lib\fsharp\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\contract\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\contract\tests\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\ui\Cargo.toml / _args: warning: Feature js of package getrandom has been obsolete in version 0.3.1 error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckJson / json: C:/home/git/dice/ui $ npm-check-updates --target greatest Using bun Checking C:\home\git\dice\ui\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.15 tailwindcss ~3.4 → ~4.0 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/dice/ui/e2e $ npm-check-updates --target greatest Using bun Checking C:\home\git\dice\ui\e2e\package.json @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-05 npm-check-updates ~17.1.14 → ~17.1.15 Run ncu --target greatest -u to upgrade package.json
In [ ]:
{ pwsh publish.ps1 } | Invoke-Block
building file list ... done created directory ../dist ./ .editorconfig .gitattributes .gitignore CODE_OF_CONDUCT.md CONTRIBUTING.md README.md i574n-deps.code-workspace i574n.code-workspace init.ps1 outdated.ps1 publish.ps1 workflow.dib workflow.dib.html workflow.dib.ipynb workflow.ps1 .devcontainer/ .devcontainer/Dockerfile .devcontainer/devcontainer.json .github/ .github/FUNDING.yml .github/workflows/ .github/workflows/gh-pages.yml profile/ profile/README.md scripts/ scripts/build.ps1 scripts/init.ps1 scripts/outdated.ps1 scripts/publish.ps1 scripts/workflow.dib scripts/workflow.dib.html scripts/workflow.dib.ipynb scripts/workflow.ps1 sent 31,135,447 bytes received 596 bytes 62,272,086.00 bytes/sec total size is 31,129,105 speedup is 1.00 building file list ... done created directory ../dist ./ skipping non-regular file ".obsidian/plugins/obsidian-custom-frames/main.js" .editorconfig .gitattributes .gitignore .markdownlint.json LICENSE README.md fleek.config.json init.ps1 publish-fleek.ps1 publish.ps1 workflow.ps1 .babashka/ .babashka/bb.edn .babashka/nbb.edn .devcontainer/ .devcontainer/Dockerfile .devcontainer/devcontainer.json .github/ .github/workflows/ .github/workflows/gh-pages.yml .obsidian/ .obsidian/app.json .obsidian/appearance.json .obsidian/bookmarks.json .obsidian/community-plugins.json .obsidian/core-plugins.json .obsidian/daily-notes.json .obsidian/graph.json .obsidian/hotkeys.json .obsidian/workspace-mobile.json .obsidian/workspace.json .obsidian/plugins/ .obsidian/plugins/babashka/ .obsidian/plugins/babashka/data.json .obsidian/plugins/babashka/main.js .obsidian/plugins/babashka/manifest.json .obsidian/plugins/better-word-count/ .obsidian/plugins/better-word-count/main.js .obsidian/plugins/better-word-count/manifest.json .obsidian/plugins/better-word-count/styles.css .obsidian/plugins/calendar/ .obsidian/plugins/calendar/data.json .obsidian/plugins/calendar/main.js .obsidian/plugins/calendar/manifest.json .obsidian/plugins/convert-url-to-iframe/ .obsidian/plugins/convert-url-to-iframe/main.js .obsidian/plugins/convert-url-to-iframe/manifest.json .obsidian/plugins/convert-url-to-iframe/styles.css .obsidian/plugins/dataview/ .obsidian/plugins/dataview/main.js .obsidian/plugins/dataview/manifest.json .obsidian/plugins/dataview/styles.css .obsidian/plugins/file-indicators/ .obsidian/plugins/file-indicators/data.json .obsidian/plugins/file-indicators/main.js .obsidian/plugins/file-indicators/manifest.json .obsidian/plugins/file-indicators/styles.css .obsidian/plugins/key-promoter/ .obsidian/plugins/key-promoter/data.json .obsidian/plugins/key-promoter/main.js .obsidian/plugins/key-promoter/manifest.json .obsidian/plugins/novel-word-count/ .obsidian/plugins/novel-word-count/data.json .obsidian/plugins/novel-word-count/main.js .obsidian/plugins/novel-word-count/manifest.json .obsidian/plugins/novel-word-count/styles.css .obsidian/plugins/obsidian-checklist-plugin/ .obsidian/plugins/obsidian-checklist-plugin/main.js .obsidian/plugins/obsidian-checklist-plugin/manifest.json .obsidian/plugins/obsidian-checklist-plugin/styles.css .obsidian/plugins/obsidian-custom-file-extensions-plugin/ .obsidian/plugins/obsidian-custom-file-extensions-plugin/data.json .obsidian/plugins/obsidian-custom-file-extensions-plugin/main.js .obsidian/plugins/obsidian-custom-file-extensions-plugin/manifest.json .obsidian/plugins/obsidian-custom-frames/ .obsidian/plugins/obsidian-custom-frames/_main.js .obsidian/plugins/obsidian-custom-frames/data.json .obsidian/plugins/obsidian-custom-frames/manifest.json .obsidian/plugins/obsidian-custom-frames/styles.css .obsidian/plugins/obsidian-day-planner/ .obsidian/plugins/obsidian-day-planner/data.json .obsidian/plugins/obsidian-day-planner/main.js .obsidian/plugins/obsidian-day-planner/manifest.json .obsidian/plugins/obsidian-day-planner/styles.css .obsidian/plugins/obsidian-git/ .obsidian/plugins/obsidian-git/data.json .obsidian/plugins/obsidian-git/main.js .obsidian/plugins/obsidian-git/manifest.json .obsidian/plugins/obsidian-git/styles.css .obsidian/plugins/obsidian-html-plugin/ .obsidian/plugins/obsidian-html-plugin/main.js .obsidian/plugins/obsidian-html-plugin/manifest.json .obsidian/plugins/obsidian-kanban/ .obsidian/plugins/obsidian-kanban/main.js .obsidian/plugins/obsidian-kanban/manifest.json .obsidian/plugins/obsidian-kanban/styles.css .obsidian/plugins/obsidian-linter/ .obsidian/plugins/obsidian-linter/data.json .obsidian/plugins/obsidian-linter/main.js .obsidian/plugins/obsidian-linter/manifest.json .obsidian/plugins/obsidian-linter/styles.css .obsidian/plugins/obsidian-mind-map/ .obsidian/plugins/obsidian-mind-map/main.js .obsidian/plugins/obsidian-mind-map/manifest.json .obsidian/plugins/obsidian-plugin-toc/ .obsidian/plugins/obsidian-plugin-toc/data.json .obsidian/plugins/obsidian-plugin-toc/main.js .obsidian/plugins/obsidian-plugin-toc/manifest.json .obsidian/plugins/obsidian-prominent-starred-files/ .obsidian/plugins/obsidian-prominent-starred-files/main.js .obsidian/plugins/obsidian-prominent-starred-files/manifest.json .obsidian/plugins/obsidian-prominent-starred-files/styles.css .obsidian/plugins/obsidian-tasks-plugin/ .obsidian/plugins/obsidian-tasks-plugin/data.json .obsidian/plugins/obsidian-tasks-plugin/main.js .obsidian/plugins/obsidian-tasks-plugin/manifest.json .obsidian/plugins/obsidian-tasks-plugin/styles.css .obsidian/plugins/obsidian-version-history-diff/ .obsidian/plugins/obsidian-version-history-diff/main.js .obsidian/plugins/obsidian-version-history-diff/manifest.json .obsidian/plugins/obsidian-version-history-diff/styles.css .obsidian/plugins/oz-image-plugin/ .obsidian/plugins/oz-image-plugin/data.json .obsidian/plugins/oz-image-plugin/main.js .obsidian/plugins/oz-image-plugin/manifest.json .obsidian/plugins/oz-image-plugin/styles.css .obsidian/plugins/recent-files-obsidian/ .obsidian/plugins/recent-files-obsidian/data.json .obsidian/plugins/recent-files-obsidian/main.js .obsidian/plugins/recent-files-obsidian/manifest.json .obsidian/plugins/recent-files-obsidian/styles.css .obsidian/plugins/remember-cursor-position/ .obsidian/plugins/remember-cursor-position/cursor-positions.json .obsidian/plugins/remember-cursor-position/main.js .obsidian/plugins/remember-cursor-position/manifest.json .obsidian/plugins/reveal-active-file-button/ .obsidian/plugins/reveal-active-file-button/main.js .obsidian/plugins/reveal-active-file-button/manifest.json .obsidian/plugins/terminal/ .obsidian/plugins/terminal/data.json .obsidian/plugins/terminal/main.js .obsidian/plugins/terminal/manifest.json .obsidian/plugins/terminal/styles.css data/ data/ai/ data/ai/ai.md data/ai/ai.mp3.md data/ai/ai.pdf.md data/ai/chatgpt.html.md data/ai/chatgpt.md data/ai/chatgpt.toml data/ai/gpt3.html.md data/ai/rhyme 6.md data/apple/ data/apple/apple.html.md data/apple/apple.i574n.md data/art/ data/art/art.md data/astrology/ data/astrology/astrology.fc1943s.md data/astrology/astrology.html.md data/astrology/astrology.md data/astronomy/ data/astronomy/astronomy.md data/biology/ data/biology/biology.mp3.md data/books/ data/books/books.md data/business/ data/business/business.md data/chat/ data/chat/AdySweet.html.md data/chat/Angrykat.html.md data/chat/AubriToffee.html.md data/chat/AwesomeEly.html.md data/chat/BirthdayLexxx.html.md data/chat/Blond3B.html.md data/chat/Brithanybrown.html.md data/chat/Cherrycute666.html.md data/chat/Dakota_Blare.html.md data/chat/EffyTudor.html.md data/chat/Fairy_Sweet.html.md data/chat/GirlOffGrid.html.md data/chat/HinakoHime.html.md data/chat/ImperialKiss.html.md data/chat/JALYN.html.md data/chat/Jully_Lov.html.md data/chat/Kitty.html.md data/chat/Luckyystrike.html.md data/chat/MissLullu.html.md data/chat/Missbaby8.html.md data/chat/NicolePowell.html.md data/chat/Olivia.html.md data/chat/Red_Flower203.html.md data/chat/RocknRose.html.md data/chat/RorrieGomez.html.md data/chat/Stacy_x3.html.md data/chat/Stephanie.html.md data/chat/TinaHale.html.md data/chat/WhitneyR.html.md data/chat/Yarrow.html.md data/chat/Yukenzi.html.md data/chat/aliceisonfire.html.md data/chat/chloewildd.html.md data/chat/diney_.html.md data/chat/kittennmoon.html.md data/chat/mfc.html.md data/chores/ data/chores/chores.md data/cliparts/ data/cliparts/avatars.i574n.png.md data/cliparts/cliparts.html.md data/clojure/ data/clojure/clojure.md data/community/ data/community/community.md data/community/netiquette_pt-br.md data/compilers/ data/compilers/compilers.md data/compilers/compilers.pdf.md data/cryptography/ data/cryptography/cryptography.md data/dance/ data/dance/dance.md data/dialects/ data/dialects/dialects.md data/dialects/dialects.pdf.md data/dialects/english.md data/dialects/korean.html.md data/dialects/korean.md data/dialects/korean.mp3.md data/dialects/korean.mp4.md data/dialects/korean.pdf.md data/dialects/korean.png.md data/dialects/portuguese.md data/dialects/spanish.md data/dotnet/ data/dotnet/dotnet.md data/doujinshi/ data/doujinshi/doujinshi.md data/drugs/ data/drugs/drugs.html.md data/drugs/drugs.md data/drugs/drugs.mp3.md data/drugs/drugs.pdf.md data/drugs/selva-verde_pt-br.md data/economy/ data/economy/만리마속도_pt-br.md data/engineering/ data/engineering/engineering.mp3.md data/ethics/ data/ethics/ethics.mp3.md data/exercism/ data/exercism/exercism.html.md data/facebook/ data/facebook/facebook.fc1943s.md data/facebook/facebook.html.md data/fashion/ data/fashion/fashion.md data/fiction/ data/fiction/acting.md data/fiction/animation.md data/fiction/comics.md data/fiction/fiction.md data/fiction/fiction.mp3.md data/fiction/series.mp4.md data/fiction/stories.md data/filmow/ data/filmow/filmow.fc1943s.md data/filmow/filmow.html.md data/fitness/ data/fitness/fitness.md data/food/ data/food/food.md data/food/food.mp3.md data/gamedev/ data/gamedev/gamedev.pdf.md data/gaming/ data/gaming/gaming.7z.md data/git/ data/git/git.md data/github/ data/github/github.fc1943s.md data/github/github.html.md data/github/github.md data/google/ data/google/google.fc1943s.md data/google/google.i574n.md data/hardware/ data/hardware/hardware.html.md data/hardware/hardware.md data/hip-hop/ data/hip-hop/complexity-and-competition_pt-br.md data/hip-hop/hip-hop.md data/history/ data/history/history.md data/history/history.mp3.md data/hunting/ data/hunting/hunting.md data/identity/ data/identity/identity.fc1943s.7z.md data/identity/identity.fc1943s.pdf.md data/identity/identity.fc1943s.png.md data/identity/identity.프리마.toml data/kakao/ data/kakao/kakao.html.md data/kakao/kakao.i574n.md data/lastfm/ data/lastfm/lastfm.fc1943s.html.md data/lastfm/lastfm.fc1943s.md data/lastfm/lastfm.html.md data/linux/ data/linux/linux.md data/magic/ data/magic/magic.html.md data/magic/magic.md data/magic/magic.pdf.md data/magic/o-caminho-demonico-dos-dados_pt-br.md data/magic/the-book-of-remembering_pt-br.md data/martial-arts/ data/martial-arts/martial-arts.md data/math/ data/math/math.md data/mercadolivre/ data/mercadolivre/mercadolivre.html.md data/mercadolivre/mercadolivre.i574n.md data/microsoft/ data/microsoft/microsoft.html.md data/microsoft/microsoft.i574n.md data/motorcycle/ data/motorcycle/motorcycle.md data/music/ data/music/mecha-haze.7z.md data/music/mecha-haze.html.md data/music/mecha-haze.pdf.md data/music/mixtape-pluto.md data/music/music.md data/music/music.mp3.md data/navigation/ data/navigation/navigation.html.md data/navigation/navigation.png.md data/nix/ data/nix/nix.html.md data/nix/nix.md data/numbers/ data/numbers/numbers.md data/personality/ data/personality/mbti.toml data/personality/personality.html.md data/personality/personality.md data/personality/personality.pdf.md data/personality/personality.png.md data/philosophy/ data/philosophy/philosophy.mp3.md data/physics/ data/physics/physics.md data/politics/ data/politics/hanauittang.md data/politics/politics.md data/politics/politics.mp3.md data/politics/politics.pdf.md data/politics/politics.png.md data/programming/ data/programming/polyglot.html.md data/programming/polyglot.md data/programming/powershell.md data/programming/programming.md data/programming/programming.mp3.md data/programming/rust.md data/programming/rust.pdf.md data/programming/systems.md data/protonmail/ data/protonmail/protonmail.fc1943s.md data/protonmail/protonmail.html.md data/protonmail/protonmail.i574n.md data/psychology/ data/psychology/inner-inferno_pt-br.md data/psychology/psychology.md data/psychology/psychology.mp3.md data/psychology/psychology.pdf.md data/reddit/ data/reddit/reddit.html.md data/reddit/reddit.i574n.md data/relationships/ data/relationships/relationships.md data/religion/ data/religion/hinduism.md data/religion/kimbanda.md data/religion/kimbanda.pdf.md data/religion/maya.md data/religion/religion.md data/religion/religion.pdf.md data/science/ data/science/science.md data/security/ data/security/security.md data/sex/ data/sex/sex.html.md data/sex/sex.md data/sex/sex.mp3.md data/sex/sex.pdf.md data/spiral/ data/spiral/spiral.html.md data/spirituality/ data/spirituality/gvk_en-us.md data/spirituality/gvk_pt-br.md data/spirituality/ressurection_pt-br.md data/spirituality/spirituality.md data/spirituality/spirituality.mp4.md data/spirituality/spirituality.pdf.md data/spirituality/the-book-of-innocence_pt-br.md data/streaming/ data/streaming/streaming.md data/tarot/ data/tarot/tarot.md data/tarot/tarot.png.md data/tech/ data/tech/devilopment_pt-br.md data/tech/tech.epub.md data/tech/tech.html.md data/tech/tech.md data/tech/tech.mp3.md data/tidal/ data/tidal/tidal.html.md data/trakt/ data/trakt/trakt.html.md data/trakt/trakt.i574n.md data/travel/ data/travel/maps.html.md data/travel/maps.md data/travel/maps.png.md data/travel/north korea.png.md data/travel/travel.html.md data/travel/travel.i574n.html.md data/travel/travel.i574n.md data/travel/travel.md data/travel/travel.mp3.md data/travel/travel.png.md data/twitter/ data/twitter/twitter.fc1943s.md data/twitter/twitter.html.md data/twitter/twitter.i574n.md data/typing/ data/typing/typing.html.md data/typing/typing.i574n.md data/typing/typing.md data/vim/ data/vim/vimrc.md data/warez/ data/warez/warez.html.md data/weather/ data/weather/weather.html.md data/weather/weather.md data/web3/ data/web3/near.html.md data/web3/storage.fc1943s.md data/web3/storage.html.md data/web3/web3.fc1943s.7z.md data/web3/web3.fc1943s.md data/web3/web3.html.md data/web3/web3.i574n.md data/web3/web3.md data/web3/web3.pdf.md data/windows/ data/windows/windows.html.md data/windows/windows.md data/work/ data/work/cv.fc1943s.md data/work/cv.fc1943s.pdf.md data/work/cv_pt-br.fc1943s.md data/work/work.fc1943s.pdf.md data/workflow/ data/workflow/tasks.md data/workflow/test.md data/workflow/test.toml data/workflow/vault.fc1943s.7z.md data/workflow/vault.html.md data/workflow/vault.md data/workflow/workflow.md data/workflow/workflow.mp3.md data/writing/ data/writing/writing.html.md data/writing/writing.md scripts/ scripts/init.ps1 scripts/publish-fleek.ps1 scripts/publish.ps1 scripts/workflow.ps1 sent 266,899,859 bytes received 7,522 bytes 76,259,251.71 bytes/sec total size is 266,805,741 speedup is 1.00 vault/scripts/publish.ps1 / targetDir: C:\home\git\vault\target\gh-pages / distDir: C:\home\git\vault/dist / targetDirLog: C:\home\git\vault/target/gh-pages / resolvedTargetDir: C:\home\git\vault\target\gh-pages fatal: destination path 'gh-pages' already exists and is not an empty directory. error: cannot pull with rebase: You have unstaged changes. error: Please commit or stash them. 00:00:00 i #1 documents.main / { args = Array(MutCell(["--source-dir", "C:\home\git\vault", "--dist-dir", "C:\home\git\vault/dist", "--cache-dir", "C:\home\git\vault\target\gh-pages", "--hangul-spec", "por-br"])) } 00:00:00 d #2 documents.run / { source_dir = \\?\C:\home\git\vault; dist_dir = \\?\C:\home\git\vault\dist; cache_dir = \\?\C:\home\git\vault\target\gh-pages; hangul_spec = por-br } 00:00:00 d #3 documents.run / { files_len = 252 } 00:00:00 d #4 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #5 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #4 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #7 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #8 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/stories.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #9 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #10 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #11 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_en-us.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #12 > '8aa274da073635a68a9f909b759505235c2bac57' 00:00:00 v #13 > 'bc664f6fe58e40fdb09e32888ff175b541ca60bb' 00:00:00 v #14 > '9374f730729923ec03218a01780c68bb615491a4' 00:00:00 v #15 > '51563b7ac15182af49fe8a3e4fba27f308d9492a' 00:00:00 v #16 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #17 > '3d488ff01374aae26e1f062b0400e2b62ad1712a' 00:00:00 d #18 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/stories.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #19 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #20 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #21 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #22 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #23 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #24 > '92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10' 00:00:00 d #25 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #26 > 'e93e10423e6621a5538596571851d23a593252d3' 00:00:00 v #27 > '774e2194fe72bc417e8c0e1df440587de46ba008' 00:00:00 v #28 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #29 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #30 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #31 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #32 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #33 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #35 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #34 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #36 > 9374f730729923ec03218a01780c68bb615491a4 00:00:00 v #37 > 8aa274da073635a68a9f909b759505235c2bac57 00:00:00 v #38 > 51563b7ac15182af49fe8a3e4fba27f308d9492a 00:00:00 v #39 > 3d488ff01374aae26e1f062b0400e2b62ad1712a 00:00:00 v #40 > 92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10 00:00:00 v #41 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #42 > bc664f6fe58e40fdb09e32888ff175b541ca60bb 00:00:00 i #43 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub } 00:00:00 v #44 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #45 > e93e10423e6621a5538596571851d23a593252d3 00:00:00 i #46 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub } 00:00:00 v #47 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #48 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; result = 5850 } 00:00:00 d #49 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; result = 150468 } 00:00:00 i #50 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf } 00:00:00 i #51 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf } 00:00:00 i #52 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub } 00:00:00 v #53 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #54 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; result = 4357 } 00:00:00 d #55 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; result = 77900 } 00:00:00 i #56 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html } 00:00:00 i #57 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf } 00:00:00 d #58 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; result = 209486 } 00:00:00 d #59 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; result = 10998 } 00:00:00 i #60 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub } 00:00:00 i #61 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html } 00:00:00 d #62 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; result = 270471 } 00:00:00 i #63 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html } 00:00:00 v #64 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #65 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub } 00:00:00 v #66 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #67 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; result = 5676 } 00:00:00 i #68 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf } 00:00:00 d #69 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; result = 690683 } 00:00:00 i #70 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub } 00:00:00 v #71 > 774e2194fe72bc417e8c0e1df440587de46ba008 00:00:00 d #72 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; result = 331977 } 00:00:00 d #73 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; result = 5531 } 00:00:00 i #74 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub } 00:00:00 i #75 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf } 00:00:00 i #76 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub } 00:00:00 i #76 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub } 00:00:00 d #78 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; result = 8824 } 00:00:00 i #79 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html } 00:00:00 d #80 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; result = 138020 } 00:00:00 d #81 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; result = 3806 } 00:00:00 d #82 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.md.epub; result = 68680 } 00:00:00 i #83 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf } 00:00:00 i #84 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html } 00:00:00 d #85 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; result = 6752 } 00:00:00 i #86 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf } 00:00:00 i #87 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf } 00:00:00 d #88 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; result = 10550 } 00:00:00 d #89 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; result = 305445 } 00:00:00 v #90 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #91 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md } 00:00:00 i #92 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf } 00:00:00 d #93 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; result = 10297 } 00:00:00 d #94 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; result = 6682 } 00:00:00 d #95 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; result = 982 } 00:00:00 d #96 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; result = 545333 } 00:00:00 d #97 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; result = 214865 } 00:00:00 i #98 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html } 00:00:00 i #99 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub } 00:00:00 i #100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html } 00:00:00 i #101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html } 00:00:00 d #102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; result = 393049 } 00:00:00 d #102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; result = 15565 } 00:00:00 d #104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; result = 5457 } 00:00:00 i #105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub } 00:00:00 i #106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub } 00:00:00 i #107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf } 00:00:00 i #108 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html } 00:00:00 d #109 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; result = 14754 } 00:00:00 i #110 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf } 00:00:00 d #112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.md.html; result = 486630 } 00:00:00 d #113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; result = 6327 } 00:00:00 d #114 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; result = 6082 } 00:00:00 i #115 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md } 00:00:00 i #116 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf } 00:00:00 d #110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.md.html; result = 227267 } 00:00:00 i #117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html } 00:00:00 i #118 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md } 00:00:00 d #119 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #120 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; result = 18125 } 00:00:00 i #121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html } 00:00:00 d #122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; result = 1320097 } 00:00:00 d #123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; result = 15781 } 00:00:00 d #124 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; result = 10237 } 00:00:00 i #125 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md } 00:00:00 i #125 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html } 00:00:00 i #127 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub } 00:00:00 d #128 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; result = 591526 } 00:00:00 d #129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; result = 300046 } 00:00:00 d #130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; result = 241 } 00:00:00 d #131 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; result = 55636 } 00:00:00 d #132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; result = 13789 } 00:00:00 i #133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub } 00:00:00 i #134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md } 00:00:00 v #135 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #136 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; result = 4606 } 00:00:00 d #137 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; result = 13689 } 00:00:00 d #138 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; result = 271989 } 00:00:00 i #139 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf } 00:00:00 i #140 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf } 00:00:00 d #141 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; result = 44687 } 00:00:00 i #142 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html } 00:00:00 d #143 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fashion/fashion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #144 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #145 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #146 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; result = 42513 } 00:00:00 d #147 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md } 00:00:00 d #149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; result = 1037850 } 00:00:00 i #150 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html } 00:00:00 d #151 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; result = 36913 } 00:00:00 i #152 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub } 00:00:00 d #153 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; result = 915676 } 00:00:00 i #154 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md } 00:00:00 d #155 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; result = 5914 } 00:00:00 i #156 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf } 00:00:00 d #157 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; result = 4977 } 00:00:00 i #159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html } 00:00:00 d #160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; result = 1201409 } 00:00:00 d #161 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; result = 11391 } 00:00:00 i #162 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub } 00:00:00 d #163 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; result = 5866 } 00:00:00 i #164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf } 00:00:00 d #165 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; result = 7480 } 00:00:00 i #166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html } 00:00:00 d #167 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; result = 11233 } 00:00:00 i #169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md } 00:00:00 d #170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; result = 1149 } 00:00:00 d #171 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #172 > '56ee19c0052ec69368954d0186b82fc57768f560' 00:00:00 v #173 > '431296e1ef3d698ddfa8eb4e42afadb8b9705626' 00:00:00 v #174 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #175 > '41c27f4e0fbaa63ad44e6d51714f29b18cca7124' 00:00:00 d #176 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #177 > 'd31795b1f438dc6014c26e770c0731d65ff3aac2' 00:00:00 v #178 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #179 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fashion/fashion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #180 > '9d8a58110fa4acf8f547c88b5246fdd2e2fce405' 00:00:00 v #181 > 'bc2fc4871a825475ed82471fa09ac9ead438a16f' 00:00:00 v #182 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #183 > '41908b616ee0d23d4bf8e8d74c949bdd21a2abf3' 00:00:00 d #184 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #185 > '817107c0597fbf70a405d513f5860e2a10c82620' 00:00:00 v #186 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #187 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #188 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #189 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #190 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #191 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #192 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #193 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #194 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #195 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #196 > 56ee19c0052ec69368954d0186b82fc57768f560 00:00:00 v #197 > 41c27f4e0fbaa63ad44e6d51714f29b18cca7124 00:00:00 v #198 > 431296e1ef3d698ddfa8eb4e42afadb8b9705626 00:00:00 v #199 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #200 > d31795b1f438dc6014c26e770c0731d65ff3aac2 00:00:00 i #201 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub } 00:00:00 d #202 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; result = 5722 } 00:00:00 i #203 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf } 00:00:00 d #204 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; result = 5145 } 00:00:00 i #205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html } 00:00:00 d #206 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; result = 10407 } 00:00:00 i #207 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub } 00:00:00 d #208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; result = 5587 } 00:00:00 i #209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf } 00:00:00 v #210 > 9d8a58110fa4acf8f547c88b5246fdd2e2fce405 00:00:00 d #211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; result = 8434 } 00:00:00 i #212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html } 00:00:00 v #213 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; result = 10256 } 00:00:00 i #215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md } 00:00:00 v #216 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #217 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; result = 419 } 00:00:00 i #218 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub } 00:00:00 v #219 > 41908b616ee0d23d4bf8e8d74c949bdd21a2abf3 00:00:00 i #220 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub } 00:00:00 d #221 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #222 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; result = 329465 } 00:00:00 i #223 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf } 00:00:00 d #224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; result = 9862 } 00:00:00 i #225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf } 00:00:00 v #226 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #227 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; result = 9110 } 00:00:00 d #228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; result = 414344 } 00:00:00 i #229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html } 00:00:00 i #230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html } 00:00:00 i #231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub } 00:00:00 d #232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; result = 6231 } 00:00:00 i #235 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf } 00:00:00 d #233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; result = 31947 } 00:00:00 d #234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; result = 1391899 } 00:00:00 i #236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub } 00:00:00 i #237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub } 00:00:00 d #238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; result = 4899 } 00:00:00 i #239 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html } 00:00:00 d #240 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; result = 9081 } 00:00:00 i #241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf } 00:00:00 d #242 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; result = 292945 } 00:00:00 i #243 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf } 00:00:00 d #244 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; result = 13563 } 00:00:00 i #245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub } 00:00:00 d #246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; result = 25410 } 00:00:00 i #247 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html } 00:00:00 d #248 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; result = 5964 } 00:00:00 i #249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf } 00:00:00 d #250 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; result = 1102930 } 00:00:00 d #251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; result = 25677 } 00:00:00 i #252 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html } 00:00:00 i #253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md } 00:00:00 v #254 > bc2fc4871a825475ed82471fa09ac9ead438a16f 00:00:00 d #255 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; result = 10630 } 00:00:00 d #256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; result = 16366 } 00:00:00 i #257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html } 00:00:00 d #258 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; result = 991541 } 00:00:00 i #259 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md } 00:00:00 d #260 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; result = 12131 } 00:00:00 i #261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md } 00:00:00 d #262 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/acting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; result = 3316 } 00:00:00 d #264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; result = 1263050 } 00:00:00 v #265 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #266 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #267 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub } 00:00:00 d #269 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; result = 5727 } 00:00:00 i #270 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf } 00:00:00 d #271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; result = 4865 } 00:00:00 i #272 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html } 00:00:00 d #273 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; result = 10426 } 00:00:00 i #274 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub } 00:00:00 d #275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; result = 5592 } 00:00:00 i #276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf } 00:00:00 d #277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; result = 8318 } 00:00:00 i #278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html } 00:00:00 d #279 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; result = 10266 } 00:00:00 i #280 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md } 00:00:00 d #281 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; result = 438 } 00:00:00 v #282 > 817107c0597fbf70a405d513f5860e2a10c82620 00:00:00 d #283 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/english.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #284 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub } 00:00:00 d #286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; result = 5511 } 00:00:00 i #287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf } 00:00:00 d #288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; result = 4534 } 00:00:00 i #289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html } 00:00:00 d #290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; result = 10083 } 00:00:00 i #291 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub } 00:00:00 d #292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; result = 5448 } 00:00:00 i #293 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf } 00:00:00 v #294 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; result = 6270 } 00:00:00 i #296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html } 00:00:00 d #297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; result = 10056 } 00:00:00 i #298 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md } 00:00:00 i #299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub } 00:00:00 d #300 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; result = 103 } 00:00:00 d #301 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; result = 69109 } 00:00:00 i #302 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf } 00:00:00 d #303 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; result = 79893 } 00:00:00 i #304 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html } 00:00:00 d #305 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #306 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; result = 293260 } 00:00:00 i #307 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub } 00:00:00 d #308 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; result = 61781 } 00:00:00 i #309 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf } 00:00:00 d #310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; result = 230927 } 00:00:00 i #311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html } 00:00:00 d #312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; result = 204770 } 00:00:00 i #313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md } 00:00:00 v #314 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; result = 267218 } 00:00:00 d #316 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub } 00:00:00 d #318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; result = 5512 } 00:00:00 i #319 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf } 00:00:00 d #320 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; result = 4136 } 00:00:00 i #321 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html } 00:00:00 d #322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; result = 10084 } 00:00:00 i #323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub } 00:00:00 d #324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; result = 5446 } 00:00:00 i #325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf } 00:00:00 d #326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; result = 6289 } 00:00:00 i #327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html } 00:00:00 d #328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; result = 10052 } 00:00:00 i #329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md } 00:00:00 d #330 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; result = 104 } 00:00:00 d #331 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #332 > '0a6f0097bf5c439e2a73990bdd489709029ecc19' 00:00:00 v #333 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #334 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #335 > '42cdf7b6ccd8f267a0ab14ed4302d2666126f920' 00:00:00 v #336 > 'cfdc145226339017389a66169f0e19bba4ca6d65' 00:00:00 v #337 > 'f014c8e3c31d9f07da79aab6bae53f0d944e95be' 00:00:00 v #338 > 'c91cdebfb596107523a7aaa85d93130ea828231b' 00:00:00 v #339 > '094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e' 00:00:00 v #340 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #341 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #342 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #343 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #344 > '48dcc245fdab8c3eb81effb7c26587051a8741e8' 00:00:00 v #345 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #346 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/acting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #347 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #348 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #349 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #350 > '2eaad8018400c59788eb9fdfb158408967c2a680' 00:00:00 d #351 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/english.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #352 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #353 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #354 > 0a6f0097bf5c439e2a73990bdd489709029ecc19 00:00:00 v #355 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #356 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #357 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #358 > 42cdf7b6ccd8f267a0ab14ed4302d2666126f920 00:00:00 i #359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub } 00:00:00 d #360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; result = 32678 } 00:00:00 i #361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf } 00:00:00 d #362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; result = 33909 } 00:00:00 i #363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html } 00:00:00 d #364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; result = 116541 } 00:00:00 i #365 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub } 00:00:00 d #366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; result = 28816 } 00:00:00 i #367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf } 00:00:00 d #368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; result = 96826 } 00:00:00 i #369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html } 00:00:00 d #370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; result = 81574 } 00:00:00 i #371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md } 00:00:00 d #372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; result = 102468 } 00:00:00 v #373 > 094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e 00:00:00 d #374 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/economy/만리마속도_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #375 > c91cdebfb596107523a7aaa85d93130ea828231b 00:00:00 v #376 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #377 > f014c8e3c31d9f07da79aab6bae53f0d944e95be 00:00:00 i #378 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub } 00:00:00 d #379 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; result = 5671 } 00:00:00 i #380 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf } 00:00:00 d #381 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; result = 4712 } 00:00:00 i #382 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html } 00:00:00 d #383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; result = 10345 } 00:00:00 i #384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub } 00:00:00 d #385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; result = 5549 } 00:00:00 i #386 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf } 00:00:00 v #387 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; result = 7659 } 00:00:00 i #389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html } 00:00:00 d #390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; result = 10204 } 00:00:00 i #391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub } 00:00:00 i #392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md } 00:00:00 v #393 > cfdc145226339017389a66169f0e19bba4ca6d65 00:00:00 d #394 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; result = 11327 } 00:00:00 d #394 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; result = 377 } 00:00:00 i #396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf } 00:00:00 d #397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; result = 7596 } 00:00:00 i #398 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html } 00:00:00 d #399 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; result = 27975 } 00:00:00 i #400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub } 00:00:00 v #401 > 48dcc245fdab8c3eb81effb7c26587051a8741e8 00:00:00 d #402 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.md.epub; result = 10376 } 00:00:00 d #403 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf } 00:00:00 d #405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; result = 22689 } 00:00:00 i #406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html } 00:00:00 d #407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.md.html; result = 22049 } 00:00:00 i #408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md } 00:00:00 d #409 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; result = 16757 } 00:00:00 v #410 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #411 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #412 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub } 00:00:00 d #413 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; result = 5787 } 00:00:00 i #414 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf } 00:00:00 d #415 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; result = 5321 } 00:00:00 i #416 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html } 00:00:00 v #417 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #418 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #419 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; result = 14722 } 00:00:00 i #420 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub } 00:00:00 d #421 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; result = 5627 } 00:00:00 i #422 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf } 00:00:00 i #423 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub } 00:00:00 i #424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub } 00:00:00 v #425 > 2eaad8018400c59788eb9fdfb158408967c2a680 00:00:00 d #426 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; result = 8657 } 00:00:00 d #427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; result = 12679 } 00:00:00 i #428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf } 00:00:00 i #428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html } 00:00:00 d #430 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; result = 195458 } 00:00:00 i #431 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf } 00:00:00 d #432 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; result = 13836 } 00:00:00 d #433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; result = 16893 } 00:00:00 i #434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md } 00:00:00 i #435 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html } 00:00:00 v #436 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #437 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; result = 3064 } 00:00:00 d #438 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; result = 203453 } 00:00:00 d #439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; result = 39218 } 00:00:00 i #440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html } 00:00:00 i #441 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub } 00:00:00 d #442 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; result = 11662 } 00:00:00 i #443 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub } 00:00:00 i #444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf } 00:00:00 d #445 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fitness/fitness.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #446 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; result = 786300 } 00:00:00 i #447 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub } 00:00:00 d #448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; result = 42707 } 00:00:00 i #449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html } 00:00:00 d #450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; result = 206420 } 00:00:00 i #451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf } 00:00:00 d #452 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.md.html; result = 31463 } 00:00:00 d #453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; result = 171495 } 00:00:00 i #454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md } 00:00:00 i #455 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf } 00:00:00 d #456 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; result = 22076 } 00:00:00 d #457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; result = 208459 } 00:00:00 i #458 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html } 00:00:00 d #459 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/animation.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; result = 855278 } 00:00:00 i #461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub } 00:00:00 d #462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; result = 181148 } 00:00:00 i #463 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf } 00:00:00 d #464 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; result = 617393 } 00:00:00 i #465 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html } 00:00:00 d #466 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; result = 646237 } 00:00:00 i #467 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html } 00:00:00 d #468 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; result = 540206 } 00:00:00 i #469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md } 00:00:00 d #470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; result = 592691 } 00:00:00 i #471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md } 00:00:00 d #472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; result = 739723 } 00:00:01 d #473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; result = 822094 } 00:00:01 v #474 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #475 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/martial-arts/martial-arts.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #476 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 i #477 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub } 00:00:01 d #478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; result = 6711 } 00:00:01 i #479 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf } 00:00:01 d #480 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; result = 6124 } 00:00:01 i #481 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html } 00:00:01 d #482 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; result = 13344 } 00:00:01 i #483 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub } 00:00:01 d #484 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.md.epub; result = 6377 } 00:00:01 i #485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf } 00:00:01 d #486 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; result = 14671 } 00:00:01 i #487 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html } 00:00:01 v #488 > 'ac4e96ed15d66d20d52a5acd366302ee1fa2c75c' 00:00:01 d #489 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.md.html; result = 12254 } 00:00:01 i #490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md } 00:00:01 d #491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; result = 3116 } 00:00:01 d #492 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/vim/vimrc.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #493 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #494 > '9e9633005f4854af5132be43c52c81f1abc3118c' 00:00:01 d #495 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #496 > '5e27ade0698b4ee7994791fd595a4fcbdcf49b21' 00:00:01 v #497 > '24833b2f816481cdd369f731b8c534211a13069c' 00:00:01 v #498 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #499 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #500 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #501 > '72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac' 00:00:01 v #502 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #503 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #504 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fitness/fitness.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #505 > 'da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a' 00:00:01 v #506 > '23758be8f32af0fbd2cdcafa908f9b54cc000dc7' 00:00:01 v #507 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #508 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/animation.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #509 > '3366dc77515fb705fc648bdabb7f4020a39d5abb' 00:00:01 v #510 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #511 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #512 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #513 > ac4e96ed15d66d20d52a5acd366302ee1fa2c75c 00:00:01 d #514 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #515 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #516 > 9e9633005f4854af5132be43c52c81f1abc3118c 00:00:01 d #517 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/vim/vimrc.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #518 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #519 > 5e27ade0698b4ee7994791fd595a4fcbdcf49b21 00:00:01 v #520 > 24833b2f816481cdd369f731b8c534211a13069c 00:00:01 i #521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub } 00:00:01 d #522 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; result = 319445 } 00:00:01 i #523 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf } 00:00:01 v #524 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; result = 331490 } 00:00:01 i #526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub } 00:00:01 i #527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html } 00:00:01 d #528 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; result = 5514 } 00:00:01 i #529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf } 00:00:01 d #530 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; result = 3758 } 00:00:01 i #531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html } 00:00:01 v #532 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #533 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; result = 1335933 } 00:00:01 i #535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub } 00:00:01 i #536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub } 00:00:01 d #537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; result = 10100 } 00:00:01 i #538 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub } 00:00:01 d #539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; result = 5825 } 00:00:01 d #540 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; result = 279819 } 00:00:01 i #541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf } 00:00:01 i #542 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf } 00:00:01 d #543 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; result = 4703 } 00:00:01 i #544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html } 00:00:01 i #545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub } 00:00:01 v #546 > 72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac 00:00:01 d #547 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; result = 7127 } 00:00:01 d #548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; result = 13006 } 00:00:01 i #549 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf } 00:00:01 d #550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; result = 5447 } 00:00:01 i #551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub } 00:00:01 i #552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf } 00:00:01 d #553 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; result = 977530 } 00:00:01 i #554 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html } 00:00:01 d #555 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; result = 7244 } 00:00:01 i #556 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html } 00:00:01 d #557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; result = 5668 } 00:00:01 i #558 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf } 00:00:01 d #559 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; result = 5892 } 00:00:01 i #560 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html } 00:00:01 d #561 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; result = 10065 } 00:00:01 d #562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; result = 8992 } 00:00:01 i #563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md } 00:00:01 i #564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html } 00:00:01 d #564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; result = 903159 } 00:00:01 i #566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md } 00:00:01 d #567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; result = 133 } 00:00:01 d #568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; result = 12334 } 00:00:01 i #569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md } 00:00:01 d #570 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; result = 2149 } 00:00:01 d #572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; result = 14757 } 00:00:01 d #573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; result = 1272473 } 00:00:01 i #574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub } 00:00:01 d #575 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; result = 6723 } 00:00:01 i #576 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf } 00:00:01 d #577 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #578 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/engineering/engineering.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #579 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; result = 18508 } 00:00:01 i #580 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html } 00:00:01 d #581 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; result = 13224 } 00:00:01 i #582 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md } 00:00:01 v #583 > da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a 00:00:01 d #584 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; result = 4527 } 00:00:01 v #585 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub } 00:00:01 d #587 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #588 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; result = 30134 } 00:00:01 i #589 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf } 00:00:01 d #590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; result = 43350 } 00:00:01 i #591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html } 00:00:01 d #592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; result = 123121 } 00:00:01 i #593 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub } 00:00:01 v #594 > 23758be8f32af0fbd2cdcafa908f9b54cc000dc7 00:00:01 d #595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; result = 27052 } 00:00:01 i #596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf } 00:00:01 d #597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; result = 106440 } 00:00:01 i #598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html } 00:00:01 d #599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.md.html; result = 90081 } 00:00:01 i #600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md } 00:00:01 d #601 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; result = 95379 } 00:00:01 d #602 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/comics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #603 > 3366dc77515fb705fc648bdabb7f4020a39d5abb 00:00:01 v #604 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub } 00:00:01 d #606 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; result = 26366 } 00:00:01 i #607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf } 00:00:01 d #608 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; result = 27386 } 00:00:01 i #609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html } 00:00:01 d #610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; result = 98846 } 00:00:01 i #611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub } 00:00:01 d #612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; result = 24236 } 00:00:01 i #613 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf } 00:00:01 d #614 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; result = 81214 } 00:00:01 i #615 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html } 00:00:01 d #616 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; result = 72012 } 00:00:01 i #617 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md } 00:00:01 v #618 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #619 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; result = 76071 } 00:00:01 v #620 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #621 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub } 00:00:01 i #622 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub } 00:00:01 d #623 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; result = 38033 } 00:00:01 d #624 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; result = 6821 } 00:00:01 i #625 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf } 00:00:01 i #626 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf } 00:00:01 d #627 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #628 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; result = 7869 } 00:00:01 i #629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html } 00:00:01 d #630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; result = 44090 } 00:00:01 i #631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html } 00:00:01 d #632 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; result = 20818 } 00:00:01 i #633 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub } 00:00:01 d #634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; result = 6589 } 00:00:01 d #634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; result = 188516 } 00:00:01 i #636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub } 00:00:01 i #636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf } 00:00:01 d #638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; result = 13552 } 00:00:01 d #639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; result = 33383 } 00:00:01 i #640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html } 00:00:01 i #641 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf } 00:00:01 d #642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; result = 18853 } 00:00:01 i #643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md } 00:00:01 d #644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; result = 133631 } 00:00:01 i #645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html } 00:00:01 d #646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; result = 5518 } 00:00:01 d #646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; result = 131276 } 00:00:01 i #648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md } 00:00:01 d #649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; result = 156203 } 00:00:01 d #650 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/warez/warez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #651 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/math/math.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #652 > '5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8' 00:00:01 v #653 > 'e0edc596c7417feeaacdbf3ea04a7b3e05048dd5' 00:00:01 v #654 > '2dfe570d538066c6a62ee8e5e4c05b67160b042c' 00:00:01 v #655 > 'bdb231b92700c577e134d2ae8d941fd84f388693' 00:00:01 v #656 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #657 > '5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8' 00:00:01 d #658 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #659 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #660 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #661 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #662 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #663 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #664 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #665 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #666 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/comics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #667 > 'c4624204251d68c706be6da67cea892f5bfeead7' 00:00:01 v #668 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #669 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #670 > '70e7431d7fa3cd9c92de39e0deffacdb7c5f7005' 00:00:01 v #671 > 'd6e3efa4eceeb79061d0e8a8d516036f770d4691' 00:00:01 v #672 > e0edc596c7417feeaacdbf3ea04a7b3e05048dd5 00:00:01 v #673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #674 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/math/math.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #675 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #676 > 2dfe570d538066c6a62ee8e5e4c05b67160b042c 00:00:01 d #677 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/warez/warez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #678 > 5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8 00:00:01 v #679 > bdb231b92700c577e134d2ae8d941fd84f388693 00:00:01 v #680 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub } 00:00:01 v #682 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; result = 5645 } 00:00:01 v #684 > 5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8 00:00:01 i #685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf } 00:00:01 i #686 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub } 00:00:01 v #687 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; result = 3990 } 00:00:01 i #689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html } 00:00:01 d #690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; result = 224165 } 00:00:01 d #691 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; result = 10278 } 00:00:01 i #692 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf } 00:00:01 i #693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub } 00:00:01 d #694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; result = 5525 } 00:00:01 i #695 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf } 00:00:01 d #696 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; result = 7540 } 00:00:01 i #697 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html } 00:00:01 i #698 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub } 00:00:01 d #699 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; result = 10118 } 00:00:01 i #700 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md } 00:00:01 d #701 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; result = 21991 } 00:00:01 d #702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; result = 296445 } 00:00:01 d #703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; result = 353 } 00:00:01 i #704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf } 00:00:01 i #705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html } 00:00:01 d #706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; result = 26438 } 00:00:01 i #707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html } 00:00:01 d #708 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ethics/ethics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; result = 87531 } 00:00:01 i #710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub } 00:00:01 d #711 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; result = 1132691 } 00:00:01 i #712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub } 00:00:01 d #713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; result = 19733 } 00:00:01 i #714 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf } 00:00:01 d #715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; result = 207001 } 00:00:01 i #716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf } 00:00:01 d #717 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; result = 79304 } 00:00:01 i #718 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html } 00:00:01 d #719 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; result = 738483 } 00:00:01 i #720 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html } 00:00:01 d #721 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.md.html; result = 823639 } 00:00:01 i #722 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md } 00:00:01 v #723 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; result = 65906 } 00:00:01 d #725 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; result = 976987 } 00:00:01 i #726 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md } 00:00:01 i #727 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub } 00:00:01 d #728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; result = 67428 } 00:00:01 d #729 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; result = 36753 } 00:00:01 i #730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf } 00:00:01 v #731 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #732 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; result = 63383 } 00:00:01 i #734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub } 00:00:01 i #735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html } 00:00:01 d #736 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/gpt3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #737 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; result = 18256 } 00:00:01 d #738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; result = 174783 } 00:00:01 i #739 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf } 00:00:01 i #740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub } 00:00:01 v #741 > c4624204251d68c706be6da67cea892f5bfeead7 00:00:01 d #742 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub; new_path = c:/home/git/vault/dist/data/food/food.md.epub; result = 33010 } 00:00:01 d #743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; result = 21904 } 00:00:01 i #744 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf } 00:00:01 i #745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html } 00:00:01 d #746 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.md.pdf; result = 135025 } 00:00:01 d #747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; result = 65859 } 00:00:01 i #748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html } 00:00:01 i #749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub } 00:00:01 d #750 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; result = 16684 } 00:00:01 d #751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html; new_path = c:/home/git/vault/dist/data/food/food.md.html; result = 128885 } 00:00:01 i #752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf } 00:00:01 i #753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md } 00:00:01 d #754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; result = 56705 } 00:00:01 d #755 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.hangul.md; result = 127583 } 00:00:01 i #756 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html } 00:00:01 d #757 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.md.html; result = 49909 } 00:00:01 i #758 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md } 00:00:01 d #759 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #760 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; result = 45838 } 00:00:01 d #761 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #762 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub } 00:00:01 v #764 > d6e3efa4eceeb79061d0e8a8d516036f770d4691 00:00:01 v #765 > 70e7431d7fa3cd9c92de39e0deffacdb7c5f7005 00:00:01 d #766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; result = 5778 } 00:00:01 i #767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf } 00:00:01 d #768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; result = 5975 } 00:00:01 i #769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html } 00:00:01 d #770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; result = 11198 } 00:00:01 i #771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub } 00:00:01 d #772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; result = 5630 } 00:00:01 i #773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf } 00:00:01 d #774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; result = 12974 } 00:00:01 i #775 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html } 00:00:01 d #776 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; result = 10750 } 00:00:01 i #777 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md } 00:00:01 d #778 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; result = 1050 } 00:00:01 d #779 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #780 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub } 00:00:01 d #782 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; result = 6278 } 00:00:01 i #783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf } 00:00:01 d #784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; result = 7355 } 00:00:01 i #785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html } 00:00:01 v #786 > 'eb05ce2c347cba8aa7491d11c958465cd9af4a87' 00:00:01 v #787 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; result = 12268 } 00:00:01 i #789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub } 00:00:01 d #790 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub; new_path = c:/home/git/vault/dist/data/math/math.md.epub; result = 6065 } 00:00:01 i #791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf } 00:00:01 i #792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub } 00:00:01 v #793 > '12b0a770aa67947704dc6cd7888ba8ca1df39a61' 00:00:01 d #794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.md.pdf; result = 14947 } 00:00:01 d #795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; result = 9974 } 00:00:01 i #796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf } 00:00:01 i #797 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html } 00:00:01 d #798 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html; new_path = c:/home/git/vault/dist/data/math/math.md.html; result = 11558 } 00:00:01 i #799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md } 00:00:01 d #800 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md; new_path = c:/home/git/vault/dist/data/math/math.hangul.md; result = 2232 } 00:00:01 d #801 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; result = 14235 } 00:00:01 i #802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html } 00:00:01 d #803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; result = 30230 } 00:00:01 i #804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub } 00:00:01 d #805 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; result = 9230 } 00:00:01 i #807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf } 00:00:01 d #808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; result = 28650 } 00:00:01 i #809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html } 00:00:01 d #810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; result = 25159 } 00:00:01 i #811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md } 00:00:01 d #812 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; result = 15005 } 00:00:01 d #813 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #814 > '35863a5ce4d23b6a72ec739442c0fd940b0a5328' 00:00:01 v #815 > 'a929a5a405afe3ec45d53978c7f1a3a6ebb78795' 00:00:01 v #816 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #817 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #818 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #819 > '941beea1483213ff0ffe70d5c32f391923b16030' 00:00:01 d #820 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #821 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #822 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #823 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #824 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #825 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #826 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/gpt3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #827 > '685814244b3cd01129b7add79b090cdfdd86b989' 00:00:01 v #828 > 'd05c5d0f35097a6a85d45b60ebf092ab80c163c8' 00:00:01 v #829 > 'c0dcdb33d63bcaff0a2b877d49653abc333d11ed' 00:00:01 v #830 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #831 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #832 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #833 > 35863a5ce4d23b6a72ec739442c0fd940b0a5328 00:00:01 d #834 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #835 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #836 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #837 > eb05ce2c347cba8aa7491d11c958465cd9af4a87 00:00:01 v #838 > 12b0a770aa67947704dc6cd7888ba8ca1df39a61 00:00:01 v #839 > a929a5a405afe3ec45d53978c7f1a3a6ebb78795 00:00:01 v #840 > 941beea1483213ff0ffe70d5c32f391923b16030 00:00:01 v #841 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub } 00:00:01 v #843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub } 00:00:01 v #844 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #846 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub } 00:00:01 d #848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; result = 26435 } 00:00:01 i #849 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf } 00:00:01 i #850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub } 00:00:01 d #851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; result = 5607 } 00:00:01 d #852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; result = 5981 } 00:00:01 i #853 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf } 00:00:01 d #854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; result = 5656 } 00:00:01 i #855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf } 00:00:01 i #856 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf } 00:00:01 d #857 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; result = 3726 } 00:00:01 i #858 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html } 00:00:01 d #859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; result = 4747 } 00:00:01 d #860 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; result = 3993 } 00:00:01 i #861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html } 00:00:01 i #862 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html } 00:00:01 d #863 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; result = 10197 } 00:00:01 d #864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; result = 10305 } 00:00:01 i #865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub } 00:00:01 i #866 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub } 00:00:01 d #867 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; result = 11902 } 00:00:01 i #868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub } 00:00:01 d #869 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; result = 5533 } 00:00:01 i #870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf } 00:00:01 d #871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; result = 5493 } 00:00:01 i #872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf } 00:00:01 d #873 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; result = 7722 } 00:00:01 d #874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; result = 5786 } 00:00:01 d #875 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; result = 6917 } 00:00:01 i #876 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf } 00:00:01 i #877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html } 00:00:01 i #878 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html } 00:00:01 d #879 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; result = 10213 } 00:00:01 d #880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; result = 30751 } 00:00:01 i #881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html } 00:00:01 i #882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html } 00:00:01 d #883 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; result = 10143 } 00:00:01 d #884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; result = 10055 } 00:00:01 v #885 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #886 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; result = 11092 } 00:00:01 i #887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md } 00:00:01 i #888 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md } 00:00:01 i #889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md } 00:00:01 d #890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; result = 98107 } 00:00:01 d #891 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; result = 380 } 00:00:01 d #892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; result = 273 } 00:00:01 i #893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub } 00:00:01 d #894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; result = 1840 } 00:00:01 d #895 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; result = 23746 } 00:00:01 i #896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf } 00:00:01 i #897 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub } 00:00:01 d #898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; result = 5733 } 00:00:01 i #899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf } 00:00:01 d #900 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/exercism/exercism.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #901 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; result = 87292 } 00:00:01 d #902 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gamedev/gamedev.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 i #904 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html } 00:00:01 d #902 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #905 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; result = 4899 } 00:00:01 i #906 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html } 00:00:01 d #907 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; result = 71613 } 00:00:01 i #908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md } 00:00:01 d #909 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; result = 11175 } 00:00:01 i #910 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub } 00:00:01 d #911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; result = 75899 } 00:00:01 d #912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; result = 5588 } 00:00:01 i #913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf } 00:00:01 d #914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; result = 7458 } 00:00:01 i #915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html } 00:00:01 d #916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; result = 10887 } 00:00:01 i #917 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md } 00:00:01 d #918 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; result = 941 } 00:00:01 d #920 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/rhyme 6.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #921 > 685814244b3cd01129b7add79b090cdfdd86b989 00:00:01 v #922 > d05c5d0f35097a6a85d45b60ebf092ab80c163c8 00:00:01 v #923 > c0dcdb33d63bcaff0a2b877d49653abc333d11ed 00:00:01 v #924 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #925 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub } 00:00:01 v #926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; result = 6272 } 00:00:01 i #928 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub } 00:00:01 i #929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf } 00:00:01 d #930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; result = 5909 } 00:00:01 i #931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html } 00:00:01 v #932 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #933 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; result = 5512 } 00:00:01 i #934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf } 00:00:01 d #935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; result = 12326 } 00:00:01 d #936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; result = 3756 } 00:00:01 i #937 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub } 00:00:01 i #938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html } 00:00:01 d #939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; result = 5992 } 00:00:01 d #940 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; result = 10092 } 00:00:01 i #941 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf } 00:00:01 i #942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub } 00:00:01 d #943 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; result = 5443 } 00:00:01 d #944 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; result = 10691 } 00:00:01 i #945 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf } 00:00:01 i #946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html } 00:00:01 i #947 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub } 00:00:01 d #948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; result = 5929 } 00:00:01 d #949 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; result = 11587 } 00:00:01 d #950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; result = 6345 } 00:00:01 i #951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html } 00:00:01 i #952 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf } 00:00:01 i #952 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md } 00:00:01 d #954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; result = 2091 } 00:00:01 d #955 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; result = 10060 } 00:00:01 i #956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md } 00:00:01 d #957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; result = 125 } 00:00:01 d #958 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #959 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #960 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; result = 7389 } 00:00:01 v #961 > 'c0cfc32ae13aa63faf689421c4f9688e7dd36e97' 00:00:01 i #962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html } 00:00:01 d #963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; result = 15692 } 00:00:01 i #964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub } 00:00:01 d #965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; result = 6091 } 00:00:01 i #966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf } 00:00:01 d #967 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; result = 11345 } 00:00:01 i #968 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html } 00:00:01 d #969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; result = 14475 } 00:00:01 i #970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md } 00:00:01 d #971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; result = 4193 } 00:00:01 v #972 > '2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2' 00:00:01 d #973 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #974 > '42d41c00c1027498867bb79e25d63be757ea1a27' 00:00:01 v #975 > '61b61ae6334ea017fee41ba877bedfd66ce5cd59' 00:00:01 v #976 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #977 > 'e80cfd7265fe2b552d3a6b9a6779d3be6747ce96' 00:00:01 d #978 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #979 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #980 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #981 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #982 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #983 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #984 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/rhyme 6.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #985 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #986 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/exercism/exercism.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #987 > '3c88c85e7787363faf664d56d7b40a12843fd18a' 00:00:02 v #988 > 'f17f49a270365e8c39076003cf9650004458b689' 00:00:02 v #989 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #990 > '6147bb686841492df1590912b0792a2e9ba8c22c' 00:00:02 v #991 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #992 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #993 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #994 > c0cfc32ae13aa63faf689421c4f9688e7dd36e97 00:00:02 v #995 > 2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2 00:00:02 v #996 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #997 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #998 > 42d41c00c1027498867bb79e25d63be757ea1a27 00:00:02 v #999 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1000 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1001 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub } 00:00:02 d #1002 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; result = 5719 } 00:00:02 i #1003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf } 00:00:02 v #1004 > e80cfd7265fe2b552d3a6b9a6779d3be6747ce96 00:00:02 v #1005 > 61b61ae6334ea017fee41ba877bedfd66ce5cd59 00:00:02 d #1006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; result = 4587 } 00:00:02 i #1007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html } 00:00:02 i #1008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub } 00:00:02 d #1009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; result = 10430 } 00:00:02 d #1009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; result = 5665 } 00:00:02 i #1011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf } 00:00:02 i #1011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub } 00:00:02 d #1013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; result = 5577 } 00:00:02 d #1013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; result = 4221 } 00:00:02 i #1015 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf } 00:00:02 i #1016 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html } 00:00:02 d #1017 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; result = 9916 } 00:00:02 d #1017 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; result = 10283 } 00:00:02 i #1019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html } 00:00:02 i #1020 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub } 00:00:02 d #1021 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; result = 5532 } 00:00:02 d #1022 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; result = 10254 } 00:00:02 i #1023 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf } 00:00:02 i #1023 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md } 00:00:02 d #1025 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; result = 443 } 00:00:02 d #1026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; result = 7694 } 00:00:02 i #1027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html } 00:00:02 d #1028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; result = 10131 } 00:00:02 i #1029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md } 00:00:02 d #1030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; result = 359 } 00:00:02 d #1031 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gaming/gaming.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1032 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1033 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/series.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 i #1034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub } 00:00:02 d #1035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; result = 5788 } 00:00:02 i #1036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf } 00:00:02 d #1037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; result = 6422 } 00:00:02 i #1038 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html } 00:00:02 d #1039 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; result = 10862 } 00:00:02 i #1040 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub } 00:00:02 d #1041 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; result = 5638 } 00:00:02 i #1042 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf } 00:00:02 d #1043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; result = 14136 } 00:00:02 i #1044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html } 00:00:02 d #1045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; result = 10545 } 00:00:02 i #1046 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md } 00:00:02 d #1047 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; result = 849 } 00:00:02 d #1048 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1049 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1050 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub } 00:00:02 v #1051 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; result = 8994 } 00:00:02 i #1053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf } 00:00:02 d #1054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; result = 5189 } 00:00:02 i #1055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html } 00:00:02 i #1056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub } 00:00:02 d #1057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; result = 5542 } 00:00:02 d #1058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; result = 18745 } 00:00:02 i #1059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf } 00:00:02 i #1060 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub } 00:00:02 d #1061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; result = 3808 } 00:00:02 i #1062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html } 00:00:02 d #1063 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; result = 8319 } 00:00:02 i #1064 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf } 00:00:02 d #1065 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; result = 10355 } 00:00:02 d #1066 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; result = 15308 } 00:00:02 i #1067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub } 00:00:02 i #1068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html } 00:00:02 d #1069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; result = 5462 } 00:00:02 i #1070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf } 00:00:02 d #1071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; result = 6010 } 00:00:02 i #1072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html } 00:00:02 d #1073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; result = 10262 } 00:00:02 i #1074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md } 00:00:02 d #1075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; result = 299 } 00:00:02 d #1076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; result = 16132 } 00:00:02 i #1077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md } 00:00:02 d #1078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; result = 8043 } 00:00:02 d #1079 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1080 > 3c88c85e7787363faf664d56d7b40a12843fd18a 00:00:02 d #1081 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1082 > f17f49a270365e8c39076003cf9650004458b689 00:00:02 v #1083 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1084 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub } 00:00:02 v #1085 > 6147bb686841492df1590912b0792a2e9ba8c22c 00:00:02 d #1086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; result = 195380 } 00:00:02 i #1087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf } 00:00:02 d #1088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; result = 711235 } 00:00:02 i #1089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html } 00:00:02 d #1090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; result = 659840 } 00:00:02 i #1091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md } 00:00:02 d #1092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; result = 905456 } 00:00:02 d #1093 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "html", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html", "--set", "html.css.add", "' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '"]; options = { command = crowbook --verbose --to html --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html" --set html.css.add \"' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1094 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub } 00:00:02 d #1096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; result = 5515 } 00:00:02 i #1097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf } 00:00:02 d #1098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; result = 4380 } 00:00:02 i #1099 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html } 00:00:02 d #1100 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; result = 10091 } 00:00:02 i #1101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub } 00:00:02 d #1102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; result = 5452 } 00:00:02 i #1103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf } 00:00:02 d #1104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; result = 5996 } 00:00:02 i #1105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html } 00:00:02 d #1106 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; result = 10060 } 00:00:02 i #1107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md } 00:00:02 d #1108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; result = 111 } 00:00:02 v #1109 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1110 > 'fe409a2db2f6562982abe31d4e36f94ac07f70cc' 00:00:02 i #1111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub } 00:00:02 d #1112 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1113 > 'ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4' 00:00:02 d #1114 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; result = 9402 } 00:00:02 i #1115 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf } 00:00:02 d #1116 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; result = 11855 } 00:00:02 i #1117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html } 00:00:02 d #1118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; result = 33105 } 00:00:02 i #1119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub } 00:00:02 d #1120 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.md.epub; result = 8779 } 00:00:02 i #1121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf } 00:00:02 d #1122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; result = 28272 } 00:00:02 i #1123 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html } 00:00:02 d #1124 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.md.html; result = 27108 } 00:00:02 i #1125 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md } 00:00:02 d #1126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; result = 17225 } 00:00:02 v #1127 > '0cc6d8990d1fe5ac8b9962d67abcc506613aec39' 00:00:02 d #1128 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/near.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1129 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1130 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1131 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gaming/gaming.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1132 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/series.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1133 ! CROWBOOK 0.17.0 00:00:02 v #1134 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1135 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1136 > 'd218e2d0579ceb35b6c9eb03d0063ac9746cda1f' 00:00:02 v #1137 > '32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708' 00:00:02 v #1138 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1139 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1140 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1141 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1142 ! 22:18:47 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:02 v #1143 ! 22:18:47 [DEBUG] (1) crowbook::book: Attempting to generate html... 00:00:02 v #1144 > '146508acc29359c653f49c8cd52ca4d5f26eee02' 00:00:02 v #1145 > 'e650f9e626339147c1809ea9782558c2717dfc3d' 00:00:02 v #1146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1147 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 00:00:02 v #1148 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 00:00:02 v #1149 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 00:00:02 v #1150 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 00:00:02 v #1151 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 00:00:02 v #1152 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 00:00:02 v #1153 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 00:00:02 v #1154 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 00:00:02 v #1155 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 00:00:02 v #1155 > fe409a2db2f6562982abe31d4e36f94ac07f70cc 00:00:02 v #1157 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 00:00:02 v #1158 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 00:00:02 v #1159 ! 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 00:00:02 d #1160 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1161 > ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4 00:00:02 v #1162 > 0cc6d8990d1fe5ac8b9962d67abcc506613aec39 00:00:02 v #1163 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1164 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1165 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub } 00:00:02 d #1166 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/near.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1167 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; result = 5566 } 00:00:02 i #1169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf } 00:00:02 d #1170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; result = 3504 } 00:00:02 i #1171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html } 00:00:02 i #1172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub } 00:00:02 d #1173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; result = 10100 } 00:00:02 d #1174 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; result = 6442 } 00:00:02 i #1175 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub } 00:00:02 i #1176 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf } 00:00:02 d #1177 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; result = 5647 } 00:00:02 d #1178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; result = 5476 } 00:00:02 i #1179 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html } 00:00:02 i #1180 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf } 00:00:02 d #1181 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; result = 14310 } 00:00:02 d #1181 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; result = 7452 } 00:00:02 i #1183 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub } 00:00:02 i #1184 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html } 00:00:02 v #1185 ! 22:18:47 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html 00:00:02 d #1186 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; result = 10137 } 00:00:02 d #1187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; result = 6060 } 00:00:02 i #1188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md } 00:00:02 i #1189 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf } 00:00:02 d #1190 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; result = 196 } 00:00:02 d #1191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; result = 10667 } 00:00:02 i #1192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html } 00:00:02 d #1193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; result = 12478 } 00:00:02 i #1194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md } 00:00:02 d #1195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; result = 3810 } 00:00:02 d #1196 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/git/git.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1197 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dotnet/dotnet.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1198 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1199 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2238 } 00:00:02 w #1200 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html; result = CROWBOOK 0.17.0 22:18:47 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 22:18:47 [DEBUG] (1) crowbook::book: Attempting to generate html... 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 22:18:47 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 22:18:47 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html } 00:00:02 i #1201 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub } 00:00:02 v #1202 > d218e2d0579ceb35b6c9eb03d0063ac9746cda1f 00:00:02 d #1203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; result = 5763 } 00:00:02 i #1204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf } 00:00:02 d #1205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; result = 5067 } 00:00:02 i #1206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html } 00:00:02 d #1207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; result = 10506 } 00:00:02 i #1208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub } 00:00:02 d #1209 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; result = 5619 } 00:00:02 i #1210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf } 00:00:02 d #1211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; result = 8555 } 00:00:02 i #1212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html } 00:00:02 d #1213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; result = 10326 } 00:00:02 i #1214 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md } 00:00:02 d #1215 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; result = 518 } 00:00:02 d #1216 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1217 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1218 > 32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708 00:00:02 v #1219 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1220 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub } 00:00:02 d #1221 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; result = 5513 } 00:00:02 i #1222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf } 00:00:02 d #1223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; result = 4531 } 00:00:02 i #1224 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html } 00:00:02 d #1225 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; result = 10086 } 00:00:02 i #1226 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub } 00:00:02 d #1227 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; result = 5449 } 00:00:02 i #1228 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf } 00:00:02 d #1229 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; result = 6216 } 00:00:02 i #1230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html } 00:00:02 d #1231 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; result = 10058 } 00:00:02 i #1232 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md } 00:00:02 d #1233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; result = 106 } 00:00:02 v #1234 ! CROWBOOK 0.17.0 00:00:02 d #1235 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/GirlOffGrid.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1236 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1237 > 146508acc29359c653f49c8cd52ca4d5f26eee02 00:00:02 i #1238 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub } 00:00:02 d #1239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; result = 5514 } 00:00:02 i #1240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf } 00:00:02 d #1241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; result = 3754 } 00:00:02 i #1242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html } 00:00:02 d #1243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; result = 10099 } 00:00:02 i #1244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub } 00:00:02 d #1245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; result = 5445 } 00:00:02 i #1246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf } 00:00:02 d #1247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; result = 5928 } 00:00:02 i #1248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html } 00:00:02 d #1249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; result = 10062 } 00:00:02 i #1250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md } 00:00:02 d #1251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; result = 132 } 00:00:02 v #1252 > e650f9e626339147c1809ea9782558c2717dfc3d 00:00:02 d #1253 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1254 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub } 00:00:02 d #1256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; result = 5524 } 00:00:02 i #1257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf } 00:00:02 d #1258 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; result = 3759 } 00:00:02 i #1259 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html } 00:00:02 d #1260 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; result = 10105 } 00:00:02 i #1261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub } 00:00:02 d #1262 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; result = 5452 } 00:00:02 i #1263 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf } 00:00:02 d #1264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; result = 5945 } 00:00:02 i #1265 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html } 00:00:02 v #1266 > '9dff62934948131bfa2a14d61ea4e056cb9c4c15' 00:00:02 d #1267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; result = 10068 } 00:00:02 i #1268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md } 00:00:02 d #1269 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; result = 138 } 00:00:02 v #1270 ! 22:18:48 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:02 v #1271 ! 22:18:48 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:02 v #1272 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1273 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 i #1274 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub } 00:00:02 d #1275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; result = 5579 } 00:00:02 i #1276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf } 00:00:02 d #1277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; result = 4244 } 00:00:02 i #1278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html } 00:00:02 d #1279 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; result = 10779 } 00:00:02 i #1280 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub } 00:00:02 d #1281 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; result = 5497 } 00:00:02 i #1282 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf } 00:00:02 d #1283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; result = 6571 } 00:00:02 i #1284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html } 00:00:02 v #1285 > '4444c1a375a066e67699f10d0ccc5f7847e149cb' 00:00:02 d #1286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.md.html; result = 10627 } 00:00:02 i #1287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md } 00:00:02 d #1288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; result = 545 } 00:00:02 v #1289 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1290 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1291 > 'cf4ab3213857e7332c4aa6d4298bceed4722422c' 00:00:02 d #1292 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/git/git.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1293 ! 22:18:48 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:02 v #1294 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1295 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dotnet/dotnet.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1296 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1297 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1298 > 'f5e82445d251df9ddf5c77ec561ad32ff1304781' 00:00:02 v #1299 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1300 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1301 > 'cb0232045c36a04a06163a007ad562c73b568cbf' 00:00:02 v #1302 > '1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8' 00:00:02 v #1303 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1304 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1305 > 9dff62934948131bfa2a14d61ea4e056cb9c4c15 00:00:02 v #1306 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1307 > 'c621e83d16716f578ef49a69593ad48d79b8d315' 00:00:02 v #1308 > 4444c1a375a066e67699f10d0ccc5f7847e149cb 00:00:02 d #1309 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1310 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub } 00:00:02 d #1312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; result = 7594 } 00:00:02 i #1313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf } 00:00:02 v #1314 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1315 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; result = 6941 } 00:00:02 i #1317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html } 00:00:02 d #1318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; result = 22492 } 00:00:02 i #1319 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub } 00:00:02 i #1320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub } 00:00:02 d #1321 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub; new_path = c:/home/git/vault/dist/data/git/git.md.epub; result = 7129 } 00:00:02 d #1322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; result = 5461 } 00:00:02 i #1323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf } 00:00:02 i #1324 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf } 00:00:02 d #1325 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; result = 3401 } 00:00:02 d #1327 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.md.pdf; result = 17923 } 00:00:02 i #1328 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html } 00:00:02 i #1329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html } 00:00:02 d #1330 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html; new_path = c:/home/git/vault/dist/data/git/git.md.html; result = 19663 } 00:00:02 d #1331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; result = 9977 } 00:00:02 i #1332 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md } 00:00:02 i #1333 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub } 00:00:02 d #1334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md; new_path = c:/home/git/vault/dist/data/git/git.hangul.md; result = 7654 } 00:00:02 d #1334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; result = 5416 } 00:00:02 i #1336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf } 00:00:02 d #1337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; result = 4970 } 00:00:02 i #1338 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html } 00:00:02 d #1339 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; result = 9957 } 00:00:02 i #1340 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md } 00:00:02 d #1341 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1342 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; result = 66 } 00:00:02 d #1343 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/doujinshi/doujinshi.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1344 > cf4ab3213857e7332c4aa6d4298bceed4722422c 00:00:02 v #1345 > f5e82445d251df9ddf5c77ec561ad32ff1304781 00:00:02 v #1346 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub } 00:00:02 d #1348 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; result = 5892 } 00:00:02 i #1349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf } 00:00:02 d #1350 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; result = 2464 } 00:00:02 i #1351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html } 00:00:02 d #1352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; result = 11145 } 00:00:02 i #1353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub } 00:00:02 v #1354 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; result = 5706 } 00:00:02 i #1356 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf } 00:00:02 d #1357 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; result = 2466 } 00:00:02 i #1358 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html } 00:00:02 d #1359 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; result = 10739 } 00:00:02 i #1360 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md } 00:00:02 d #1361 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; result = 1018 } 00:00:02 i #1362 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub } 00:00:02 v #1363 > cb0232045c36a04a06163a007ad562c73b568cbf 00:00:02 d #1364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; result = 5569 } 00:00:02 i #1365 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf } 00:00:02 d #1366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; result = 4626 } 00:00:02 i #1367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html } 00:00:02 d #1368 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/portuguese.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; result = 11683 } 00:00:02 i #1370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub } 00:00:02 d #1371 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; result = 5494 } 00:00:02 i #1372 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf } 00:00:02 d #1373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; result = 5019 } 00:00:02 i #1374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html } 00:00:02 d #1375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; result = 11642 } 00:00:02 i #1376 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md } 00:00:02 d #1377 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; result = 152 } 00:00:02 v #1378 > 1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8 00:00:02 d #1379 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/HinakoHime.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1380 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1381 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub } 00:00:02 d #1382 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; result = 5510 } 00:00:02 i #1383 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf } 00:00:02 d #1384 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; result = 4375 } 00:00:02 i #1385 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html } 00:00:02 d #1386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; result = 10079 } 00:00:02 i #1387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub } 00:00:02 d #1388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; result = 5448 } 00:00:02 i #1389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf } 00:00:02 d #1390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; result = 5913 } 00:00:02 i #1391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html } 00:00:02 v #1392 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; result = 10053 } 00:00:02 i #1394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md } 00:00:02 d #1395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; result = 98 } 00:00:02 i #1396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub } 00:00:02 d #1397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; result = 5503 } 00:00:02 i #1398 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf } 00:00:02 d #1399 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; result = 4374 } 00:00:02 i #1400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html } 00:00:02 d #1401 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/art/art.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1402 > 'aa9b632fd28a65b90889fceeaac081b022d42341' 00:00:02 d #1403 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; result = 10076 } 00:00:02 i #1404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub } 00:00:02 d #1405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; result = 5444 } 00:00:02 i #1406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf } 00:00:02 d #1407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; result = 5983 } 00:00:02 i #1408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html } 00:00:02 d #1409 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; result = 10052 } 00:00:02 i #1410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md } 00:00:02 d #1411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; result = 96 } 00:00:02 v #1412 > 'b0c8fd838dd78173824274b77bbcef62bcaa2290' 00:00:02 v #1413 > c621e83d16716f578ef49a69593ad48d79b8d315 00:00:02 d #1414 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/motorcycle/motorcycle.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1415 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1416 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1417 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1418 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1419 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub } 00:00:02 d #1420 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; result = 5513 } 00:00:02 i #1421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf } 00:00:02 d #1422 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; result = 3989 } 00:00:02 i #1423 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html } 00:00:02 d #1424 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; result = 10077 } 00:00:02 i #1426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub } 00:00:02 d #1427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; result = 5459 } 00:00:02 i #1428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf } 00:00:02 d #1429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; result = 6430 } 00:00:02 i #1430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html } 00:00:02 d #1431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; result = 10153 } 00:00:02 i #1432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md } 00:00:02 d #1433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; result = 173 } 00:00:02 d #1434 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1435 > 'd1f86efd6a618fd5e2c37d84ff58297aab9949b4' 00:00:02 v #1436 > 'de3214502cd7688c3205782f465182caf2927a32' 00:00:02 v #1437 > '02380a4f67cd6e997b3a6908ff083f06fd787dc3' 00:00:02 v #1437 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1439 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1440 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1441 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/portuguese.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1442 > '24ca6b8bb4703b72584fc04f018322ca2fbb243a' 00:00:02 v #1443 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1444 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/art/art.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1445 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1446 > aa9b632fd28a65b90889fceeaac081b022d42341 00:00:02 d #1447 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1448 > b0c8fd838dd78173824274b77bbcef62bcaa2290 00:00:02 v #1449 > '8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3' 00:00:02 v #1450 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub } 00:00:02 v #1452 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; result = 22492 } 00:00:02 i #1454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf } 00:00:02 d #1455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; result = 41661 } 00:00:02 i #1456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html } 00:00:02 i #1457 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub } 00:00:02 d #1458 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; result = 5509 } 00:00:02 d #1459 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; result = 146553 } 00:00:02 i #1460 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub } 00:00:02 i #1460 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf } 00:00:02 d #1462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; result = 4530 } 00:00:02 d #1463 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; result = 20254 } 00:00:02 i #1464 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html } 00:00:02 i #1465 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf } 00:00:02 d #1466 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; result = 10083 } 00:00:02 d #1467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; result = 105252 } 00:00:02 i #1468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub } 00:00:02 i #1469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html } 00:00:02 d #1470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; result = 102650 } 00:00:02 i #1471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md } 00:00:02 d #1472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; result = 5448 } 00:00:02 i #1473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf } 00:00:02 d #1474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; result = 123460 } 00:00:02 d #1475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; result = 6403 } 00:00:02 i #1476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html } 00:00:02 d #1477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; result = 10056 } 00:00:02 i #1478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md } 00:00:02 d #1479 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1480 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1481 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; result = 102 } 00:00:02 d #1482 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1483 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1484 > d1f86efd6a618fd5e2c37d84ff58297aab9949b4 00:00:02 v #1485 > de3214502cd7688c3205782f465182caf2927a32 00:00:02 v #1486 > 02380a4f67cd6e997b3a6908ff083f06fd787dc3 00:00:02 v #1487 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1488 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub } 00:00:02 v #1489 > 24ca6b8bb4703b72584fc04f018322ca2fbb243a 00:00:02 v #1490 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; result = 10344 } 00:00:02 i #1492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf } 00:00:02 d #1493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; result = 8568 } 00:00:02 i #1494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html } 00:00:02 d #1495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; result = 31204 } 00:00:02 i #1496 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub } 00:00:02 i #1497 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub } 00:00:02 d #1498 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; result = 9453 } 00:00:02 d #1499 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; result = 5563 } 00:00:02 i #1500 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf } 00:00:02 i #1501 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf } 00:00:02 d #1502 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; result = 4626 } 00:00:02 d #1502 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; result = 23477 } 00:00:02 i #1504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html } 00:00:02 i #1505 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html } 00:00:02 d #1506 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; result = 11677 } 00:00:02 d #1507 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; result = 25635 } 00:00:02 i #1508 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md } 00:00:02 i #1508 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub } 00:00:02 d #1510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; result = 5494 } 00:00:02 d #1511 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; result = 17654 } 00:00:02 i #1512 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf } 00:00:02 d #1513 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; result = 4912 } 00:00:02 i #1514 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html } 00:00:02 d #1515 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; result = 11641 } 00:00:02 i #1516 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md } 00:00:02 d #1517 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; result = 146 } 00:00:02 d #1518 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/spanish.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1519 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1520 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub } 00:00:02 d #1521 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/ImperialKiss.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1522 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; result = 16105 } 00:00:02 i #1523 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf } 00:00:02 d #1524 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; result = 17380 } 00:00:02 i #1525 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html } 00:00:02 v #1526 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; result = 65279 } 00:00:02 i #1528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub } 00:00:02 d #1529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub; new_path = c:/home/git/vault/dist/data/art/art.md.epub; result = 14777 } 00:00:02 i #1530 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf } 00:00:02 i #1531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub } 00:00:02 d #1532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.md.pdf; result = 52219 } 00:00:02 i #1533 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html } 00:00:02 d #1534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html; new_path = c:/home/git/vault/dist/data/art/art.md.html; result = 47098 } 00:00:02 d #1535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; result = 27699 } 00:00:02 i #1536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf } 00:00:02 i #1536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md } 00:00:02 d #1538 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md; new_path = c:/home/git/vault/dist/data/art/art.hangul.md; result = 47256 } 00:00:02 d #1539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; result = 32901 } 00:00:02 i #1540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html } 00:00:02 d #1541 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; result = 121331 } 00:00:02 d #1542 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 i #1543 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub } 00:00:02 d #1544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; result = 24962 } 00:00:02 i #1545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf } 00:00:02 v #1546 > '087920199f5f965c9f053b82497e31778239031a' 00:00:02 d #1547 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; result = 89645 } 00:00:02 i #1548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html } 00:00:02 d #1549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; result = 85924 } 00:00:02 i #1550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md } 00:00:02 d #1551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; result = 94916 } 00:00:02 v #1552 > 8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3 00:00:02 d #1553 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1554 > '59cafeb2eab9137533d826d1f22e9b6de89480de' 00:00:02 v #1555 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1556 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1557 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1558 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1559 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub } 00:00:02 d #1560 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; result = 5516 } 00:00:02 i #1561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf } 00:00:02 d #1562 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; result = 3757 } 00:00:02 i #1564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html } 00:00:02 d #1565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; result = 10102 } 00:00:02 i #1566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub } 00:00:03 d #1567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; result = 5444 } 00:00:03 i #1568 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf } 00:00:03 d #1569 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; result = 5809 } 00:00:03 i #1570 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html } 00:00:03 d #1571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; result = 10062 } 00:00:03 i #1572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md } 00:00:03 d #1573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; result = 135 } 00:00:03 d #1574 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1575 > '6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be' 00:00:03 v #1576 > '774732b6fcb822c743c608aef727c05b0694c557' 00:00:03 v #1577 > '41cae76c6cc16843a084f0ce3da67875305b0e79' 00:00:03 v #1578 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1579 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1580 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/spanish.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1581 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1582 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1583 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1584 > '3aefa48e6c711a297a64c548bd78a747c26bc2ff' 00:00:03 v #1585 > 087920199f5f965c9f053b82497e31778239031a 00:00:03 v #1586 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1587 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1588 > 59cafeb2eab9137533d826d1f22e9b6de89480de 00:00:03 v #1589 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub } 00:00:03 d #1591 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; result = 5510 } 00:00:03 i #1592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf } 00:00:03 d #1593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; result = 3786 } 00:00:03 i #1594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html } 00:00:03 d #1595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; result = 10093 } 00:00:03 i #1596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub } 00:00:03 d #1597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; result = 5445 } 00:00:03 i #1598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf } 00:00:03 d #1599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; result = 6041 } 00:00:03 i #1600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html } 00:00:03 v #1601 > '55a0a78a273271af1907f429f6ba3e2f9a521847' 00:00:03 d #1602 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; result = 10060 } 00:00:03 i #1603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md } 00:00:03 d #1604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; result = 126 } 00:00:03 v #1605 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1606 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub } 00:00:03 d #1608 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; result = 5650 } 00:00:03 i #1609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf } 00:00:03 d #1610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; result = 4755 } 00:00:03 i #1611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html } 00:00:03 d #1612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; result = 10503 } 00:00:03 i #1613 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub } 00:00:03 d #1614 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.md.epub; result = 5534 } 00:00:03 i #1615 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf } 00:00:03 d #1616 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; result = 7624 } 00:00:03 i #1617 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html } 00:00:03 d #1618 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.md.html; result = 10367 } 00:00:03 i #1619 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md } 00:00:03 d #1620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; result = 423 } 00:00:03 v #1621 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1622 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1622 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1624 > 6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be 00:00:03 v #1625 > 774732b6fcb822c743c608aef727c05b0694c557 00:00:03 v #1626 > 41cae76c6cc16843a084f0ce3da67875305b0e79 00:00:03 v #1627 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1628 > 3aefa48e6c711a297a64c548bd78a747c26bc2ff 00:00:03 i #1629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub } 00:00:03 v #1630 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; result = 20164 } 00:00:03 i #1632 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf } 00:00:03 d #1633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; result = 21277 } 00:00:03 i #1634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html } 00:00:03 v #1635 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1636 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; result = 78039 } 00:00:03 i #1637 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub } 00:00:03 i #1638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub } 00:00:03 d #1639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; result = 18291 } 00:00:03 i #1640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub } 00:00:03 i #1641 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf } 00:00:03 d #1642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; result = 5567 } 00:00:03 i #1643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf } 00:00:03 d #1644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; result = 43114 } 00:00:03 i #1645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf } 00:00:03 d #1646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; result = 59586 } 00:00:03 i #1647 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html } 00:00:03 d #1648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; result = 4626 } 00:00:03 d #1649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; result = 116003 } 00:00:03 i #1650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html } 00:00:03 i #1651 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html } 00:00:03 d #1652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; result = 56736 } 00:00:03 d #1653 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; result = 11683 } 00:00:03 i #1654 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md } 00:00:03 i #1655 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub } 00:00:03 d #1656 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; result = 217718 } 00:00:03 i #1657 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub } 00:00:03 d #1658 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; result = 57778 } 00:00:03 d #1659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; result = 5496 } 00:00:03 i #1660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf } 00:00:03 d #1661 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; result = 39894 } 00:00:03 i #1662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf } 00:00:03 d #1663 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; result = 4864 } 00:00:03 i #1664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html } 00:00:03 v #1665 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; result = 11643 } 00:00:03 d #1667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; result = 186037 } 00:00:03 i #1668 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md } 00:00:03 i #1669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html } 00:00:03 d #1670 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; result = 152 } 00:00:03 d #1671 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1672 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; result = 173538 } 00:00:03 i #1673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md } 00:00:03 d #1674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; result = 153511 } 00:00:03 d #1675 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/JALYN.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1676 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub } 00:00:03 d #1677 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; result = 5933 } 00:00:03 i #1679 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf } 00:00:03 d #1680 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; result = 8529 } 00:00:03 i #1681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html } 00:00:03 v #1682 > '175166e893681d4a1d3046b5b80ed26e41716f15' 00:00:03 d #1683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; result = 11189 } 00:00:03 i #1684 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub } 00:00:03 d #1685 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; result = 5796 } 00:00:03 i #1686 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf } 00:00:03 d #1687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; result = 12072 } 00:00:03 i #1688 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html } 00:00:03 d #1689 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; result = 11184 } 00:00:03 i #1690 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md } 00:00:03 d #1691 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; result = 1014 } 00:00:03 d #1692 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1693 > '27afa1d088c59f862a66f286a298bdb2682ff16d' 00:00:03 v #1694 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1695 > 55a0a78a273271af1907f429f6ba3e2f9a521847 00:00:03 d #1696 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1697 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1698 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1699 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1700 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub } 00:00:03 d #1701 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; result = 5654 } 00:00:03 i #1702 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf } 00:00:03 d #1703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; result = 5589 } 00:00:03 i #1704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html } 00:00:03 d #1705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; result = 10319 } 00:00:03 i #1706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub } 00:00:03 d #1707 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; result = 5541 } 00:00:03 i #1708 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf } 00:00:03 d #1709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; result = 8065 } 00:00:03 i #1710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html } 00:00:03 d #1711 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; result = 10314 } 00:00:03 i #1712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md } 00:00:03 d #1713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; result = 312 } 00:00:03 d #1714 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1715 > 'e42da5723e601e2eaf26691ae223892b88386727' 00:00:03 v #1716 > 'e2a97d576e8c00a85dd8a963faa6b0bd07588818' 00:00:03 v #1717 > '4007a55af935129be5481c0874a4c074bd62ad70' 00:00:03 v #1718 > '958832121d0f20dc5c6868c06bb576d70790c141' 00:00:03 v #1719 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1721 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/JALYN.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1722 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1723 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1724 > 175166e893681d4a1d3046b5b80ed26e41716f15 00:00:03 d #1725 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1726 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1727 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1728 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub } 00:00:03 d #1730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; result = 54555 } 00:00:03 i #1731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf } 00:00:03 v #1732 > 27afa1d088c59f862a66f286a298bdb2682ff16d 00:00:03 d #1733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; result = 59569 } 00:00:03 i #1734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html } 00:00:03 d #1735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; result = 208269 } 00:00:03 i #1736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub } 00:00:03 d #1737 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; result = 47872 } 00:00:03 i #1738 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf } 00:00:03 d #1739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; result = 164323 } 00:00:03 i #1740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html } 00:00:03 d #1741 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; result = 142593 } 00:00:03 i #1742 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md } 00:00:03 v #1743 > 'a723feaae6f8e91d29bb55f9687d6cc9ab00c214' 00:00:03 d #1744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; result = 186809 } 00:00:03 d #1745 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1746 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1747 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub } 00:00:03 d #1748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; result = 5535 } 00:00:03 i #1749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf } 00:00:03 d #1750 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; result = 4127 } 00:00:03 i #1751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html } 00:00:03 d #1752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; result = 10048 } 00:00:03 i #1753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub } 00:00:03 v #1754 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1755 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub; new_path = c:/home/git/vault/dist/data/github/github.md.epub; result = 5492 } 00:00:03 i #1756 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf } 00:00:03 d #1757 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.md.pdf; result = 6161 } 00:00:03 i #1758 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html } 00:00:03 d #1759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html; new_path = c:/home/git/vault/dist/data/github/github.md.html; result = 10235 } 00:00:03 i #1760 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md } 00:00:03 d #1761 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1762 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.hangul.md; result = 118 } 00:00:03 d #1763 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1764 > e42da5723e601e2eaf26691ae223892b88386727 00:00:03 v #1765 > e2a97d576e8c00a85dd8a963faa6b0bd07588818 00:00:03 v #1766 > 4007a55af935129be5481c0874a4c074bd62ad70 00:00:03 v #1767 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1768 > 958832121d0f20dc5c6868c06bb576d70790c141 00:00:03 v #1769 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1770 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub } 00:00:03 v #1771 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1772 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub } 00:00:03 d #1774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; result = 5559 } 00:00:03 d #1775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; result = 5578 } 00:00:03 i #1776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf } 00:00:03 i #1777 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf } 00:00:03 i #1778 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub } 00:00:03 i #1779 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub } 00:00:03 d #1780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; result = 4748 } 00:00:03 d #1781 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; result = 4629 } 00:00:03 i #1782 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html } 00:00:03 i #1783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html } 00:00:03 d #1784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; result = 5519 } 00:00:03 i #1785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf } 00:00:03 d #1786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; result = 40361 } 00:00:03 i #1787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf } 00:00:03 d #1788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; result = 2611 } 00:00:03 d #1789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; result = 10179 } 00:00:03 d #1790 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; result = 11668 } 00:00:03 i #1791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html } 00:00:03 i #1791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub } 00:00:03 i #1793 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub } 00:00:03 d #1794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; result = 48381 } 00:00:03 d #1795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; result = 10075 } 00:00:03 d #1796 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; result = 5488 } 00:00:03 i #1797 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html } 00:00:03 i #1798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf } 00:00:03 i #1799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub } 00:00:03 d #1800 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; result = 5493 } 00:00:03 i #1801 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf } 00:00:03 v #1802 > '8fabe889f569ba3807ef0839f2b579234fb81f91' 00:00:03 d #1803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; result = 5450 } 00:00:03 d #1804 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; result = 7490 } 00:00:03 d #1805 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; result = 5097 } 00:00:03 d #1806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; result = 159575 } 00:00:03 i #1807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf } 00:00:03 i #1807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html } 00:00:03 i #1809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html } 00:00:03 i #1810 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub } 00:00:03 d #1811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; result = 5870 } 00:00:03 d #1811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; result = 10116 } 00:00:03 d #1813 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; result = 11636 } 00:00:03 d #1814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; result = 35705 } 00:00:03 i #1815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md } 00:00:03 i #1815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md } 00:00:03 i #1817 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html } 00:00:03 i #1818 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf } 00:00:03 d #1819 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; result = 208 } 00:00:03 d #1820 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; result = 137 } 00:00:03 d #1821 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; result = 10134 } 00:00:03 i #1822 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md } 00:00:03 d #1823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; result = 130346 } 00:00:03 i #1824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html } 00:00:03 d #1825 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; result = 144 } 00:00:03 d #1826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; result = 110911 } 00:00:03 i #1827 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md } 00:00:03 d #1828 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1828 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Jully_Lov.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1830 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1831 > a723feaae6f8e91d29bb55f9687d6cc9ab00c214 00:00:03 d #1832 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; result = 143161 } 00:00:03 v #1833 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1834 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/hip-hop.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1835 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1836 > '39a4aa5522c29d1e4a6cc2af335e668046fd4cf2' 00:00:03 v #1837 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1838 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1839 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1840 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub } 00:00:03 d #1841 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; result = 5745 } 00:00:03 i #1842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf } 00:00:03 d #1843 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; result = 6705 } 00:00:03 i #1844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html } 00:00:03 d #1845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; result = 10517 } 00:00:03 i #1846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub } 00:00:03 d #1847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; result = 5693 } 00:00:03 i #1848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf } 00:00:03 d #1849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; result = 13933 } 00:00:03 i #1850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html } 00:00:03 d #1851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; result = 10876 } 00:00:03 i #1852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md } 00:00:03 d #1853 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; result = 472 } 00:00:03 d #1854 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1855 > '460ade05b46845f1860c525fad851cadb565e729' 00:00:03 v #1856 > 'df90480d7167c6c24119ee562da030d08f4ff6cf' 00:00:03 v #1857 > 8fabe889f569ba3807ef0839f2b579234fb81f91 00:00:03 v #1858 > '2c06b013af1d068ad31ba331c43998c1e4bed274' 00:00:03 v #1859 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1859 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1861 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1862 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1863 > '01521afcb2137c1e764ac68f071a5d357f1fd11b' 00:00:03 d #1864 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1865 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1866 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1867 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub } 00:00:03 d #1868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; result = 6406 } 00:00:03 i #1869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf } 00:00:03 d #1870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; result = 2203 } 00:00:03 i #1871 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html } 00:00:03 d #1872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; result = 12565 } 00:00:03 i #1873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub } 00:00:03 d #1874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; result = 6137 } 00:00:03 i #1875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf } 00:00:03 d #1876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; result = 2197 } 00:00:03 i #1877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html } 00:00:03 d #1878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; result = 11697 } 00:00:03 i #1879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md } 00:00:03 d #1880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; result = 2418 } 00:00:03 d #1881 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1882 > 39a4aa5522c29d1e4a6cc2af335e668046fd4cf2 00:00:03 v #1883 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1884 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1885 > '92f543f4856cde35cccf2d2d21bd6a78ad15dd3b' 00:00:03 v #1886 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub } 00:00:03 d #1888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; result = 5542 } 00:00:03 i #1889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf } 00:00:03 d #1890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; result = 4582 } 00:00:03 i #1891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html } 00:00:03 d #1892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; result = 10303 } 00:00:03 i #1893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub } 00:00:03 d #1894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; result = 5465 } 00:00:03 i #1895 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf } 00:00:03 d #1896 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; result = 6447 } 00:00:03 i #1897 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html } 00:00:03 d #1898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; result = 10241 } 00:00:03 i #1899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md } 00:00:03 d #1900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; result = 221 } 00:00:03 d #1901 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1902 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1903 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1904 > 2c06b013af1d068ad31ba331c43998c1e4bed274 00:00:03 v #1905 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1906 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub } 00:00:03 d #1907 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; result = 25892 } 00:00:03 i #1908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf } 00:00:03 v #1909 > 460ade05b46845f1860c525fad851cadb565e729 00:00:03 v #1910 > '7f1799bbda143e7281134173a6158c26693bea3b' 00:00:03 d #1911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; result = 34721 } 00:00:03 i #1912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html } 00:00:03 d #1913 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; result = 141246 } 00:00:03 i #1914 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub } 00:00:03 d #1915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; result = 23071 } 00:00:03 i #1916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf } 00:00:03 v #1917 > df90480d7167c6c24119ee562da030d08f4ff6cf 00:00:03 d #1918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; result = 99118 } 00:00:03 i #1919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html } 00:00:03 d #1920 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; result = 96432 } 00:00:03 i #1921 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md } 00:00:03 d #1922 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; result = 115556 } 00:00:03 v #1923 > 01521afcb2137c1e764ac68f071a5d357f1fd11b 00:00:03 d #1924 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astronomy/astronomy.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1925 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1927 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1928 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub } 00:00:03 d #1930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; result = 5563 } 00:00:03 i #1931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub } 00:00:03 i #1932 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf } 00:00:03 d #1933 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; result = 5973 } 00:00:03 i #1934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf } 00:00:03 d #1935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; result = 4677 } 00:00:03 i #1936 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html } 00:00:03 d #1937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; result = 5433 } 00:00:03 i #1938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html } 00:00:03 d #1939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; result = 11671 } 00:00:03 i #1940 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub } 00:00:03 d #1941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; result = 11802 } 00:00:03 i #1942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub } 00:00:03 d #1943 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; result = 5492 } 00:00:03 i #1944 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf } 00:00:03 d #1945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; result = 5777 } 00:00:03 i #1946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf } 00:00:03 d #1947 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; result = 4927 } 00:00:03 v #1948 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html } 00:00:03 d #1950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; result = 9929 } 00:00:03 i #1951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html } 00:00:03 d #1952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; result = 11635 } 00:00:03 i #1953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md } 00:00:03 d #1954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; result = 11242 } 00:00:03 i #1955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md } 00:00:03 d #1956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; result = 141 } 00:00:03 d #1957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; result = 1657 } 00:00:03 i #1958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub } 00:00:03 d #1959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; result = 204399 } 00:00:03 i #1960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf } 00:00:03 d #1961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; result = 218135 } 00:00:03 d #1962 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mixtape-pluto.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1963 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/kittennmoon.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html } 00:00:03 d #1965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; result = 901844 } 00:00:03 i #1966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub } 00:00:03 d #1967 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; result = 180054 } 00:00:03 i #1968 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf } 00:00:03 d #1969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; result = 629891 } 00:00:03 i #1970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html } 00:00:03 d #1971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; result = 632523 } 00:00:03 i #1972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md } 00:00:03 d #1973 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; result = 795535 } 00:00:03 v #1974 > '1013875caf0a332dc86ee8da724f19e74e796252' 00:00:03 d #1975 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1976 > 92f543f4856cde35cccf2d2d21bd6a78ad15dd3b 00:00:03 v #1977 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1978 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1979 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1980 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub } 00:00:03 d #1981 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; result = 5557 } 00:00:03 i #1982 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf } 00:00:03 d #1983 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; result = 3791 } 00:00:03 i #1984 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html } 00:00:03 d #1985 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; result = 10329 } 00:00:03 i #1986 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub } 00:00:03 d #1987 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; result = 5472 } 00:00:03 i #1988 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf } 00:00:03 d #1989 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; result = 6103 } 00:00:03 i #1990 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html } 00:00:03 d #1991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; result = 10254 } 00:00:03 i #1992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md } 00:00:03 d #1993 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; result = 273 } 00:00:03 d #1994 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1995 > 7f1799bbda143e7281134173a6158c26693bea3b 00:00:03 v #1996 > '753041fb0dc0874d9ae140ef8b76be1301e02186' 00:00:03 v #1997 > '7856f655f4f8476bfb86169e7afb3d5434957dee' 00:00:03 v #1998 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1999 > 'cba44947002177d81094bbfcafe46a93f1bdc47e' 00:00:03 v #2000 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #2001 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astronomy/astronomy.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #2002 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub } 00:00:03 d #2003 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; result = 6839 } 00:00:03 i #2004 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf } 00:00:03 d #2005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; result = 9466 } 00:00:03 i #2006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html } 00:00:03 d #2007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; result = 19814 } 00:00:03 i #2008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub } 00:00:03 d #2009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; result = 6444 } 00:00:03 i #2010 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf } 00:00:03 d #2011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; result = 13751 } 00:00:03 i #2012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html } 00:00:03 d #2013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; result = 17575 } 00:00:03 i #2014 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md } 00:00:03 d #2015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; result = 7076 } 00:00:03 v #2016 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2017 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #2018 > '56ff044e3443dc01d62c5d2f0f72ea826c4dacb1' 00:00:03 v #2019 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2020 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mixtape-pluto.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #2021 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #2022 > 1013875caf0a332dc86ee8da724f19e74e796252 00:00:03 v #2023 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2024 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #2025 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #2026 > 'd328e42faa6744c53ddc51cce73e99babf354294' 00:00:03 i #2027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub } 00:00:03 d #2028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; result = 5513 } 00:00:03 i #2029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf } 00:00:03 d #2030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; result = 4377 } 00:00:03 i #2031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html } 00:00:03 d #2032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; result = 10079 } 00:00:03 i #2033 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub } 00:00:03 d #2034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; result = 5449 } 00:00:03 i #2035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf } 00:00:03 d #2036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; result = 6155 } 00:00:03 i #2037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html } 00:00:03 d #2038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; result = 10054 } 00:00:03 i #2039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md } 00:00:03 d #2040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; result = 99 } 00:00:03 v #2041 > 753041fb0dc0874d9ae140ef8b76be1301e02186 00:00:03 d #2042 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #2043 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2044 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #2045 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #2046 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub } 00:00:03 v #2047 > 7856f655f4f8476bfb86169e7afb3d5434957dee 00:00:03 d #2048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; result = 8985 } 00:00:03 i #2049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf } 00:00:03 d #2050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; result = 8573 } 00:00:03 i #2051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html } 00:00:03 d #2052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; result = 27366 } 00:00:03 i #2053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub } 00:00:03 d #2054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; result = 8307 } 00:00:03 i #2055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf } 00:00:03 d #2056 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; result = 22461 } 00:00:03 i #2057 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html } 00:00:03 v #2058 > 'f238a467d3cdbf24b27bc8955e11fc8be38784f5' 00:00:03 d #2059 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; result = 22545 } 00:00:03 i #2060 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md } 00:00:03 d #2061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; result = 12447 } 00:00:03 v #2062 > cba44947002177d81094bbfcafe46a93f1bdc47e 00:00:03 d #2063 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/biology/biology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #2064 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #2065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #2066 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #2067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub } 00:00:03 v #2068 > 56ff044e3443dc01d62c5d2f0f72ea826c4dacb1 00:00:03 d #2069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; result = 40498 } 00:00:03 i #2070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf } 00:00:03 d #2071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; result = 206108 } 00:00:03 i #2072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html } 00:00:03 d #2073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; result = 139753 } 00:00:03 i #2074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub } 00:00:03 v #2075 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #2076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; result = 41640 } 00:00:03 i #2077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf } 00:00:03 d #2078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; result = 86665 } 00:00:03 i #2079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html } 00:00:03 i #2080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub } 00:00:03 d #2081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; result = 128112 } 00:00:03 i #2082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md } 00:00:03 d #2083 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; result = 5562 } 00:00:03 i #2084 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf } 00:00:03 d #2085 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; result = 4627 } 00:00:03 i #2086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html } 00:00:03 d #2087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; result = 121850 } 00:00:03 d #2087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; result = 11671 } 00:00:03 i #2089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub } 00:00:03 d #2090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; result = 5493 } 00:00:03 i #2091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf } 00:00:03 v #2092 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #2093 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #2094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; result = 4849 } 00:00:03 i #2095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html } 00:00:03 d #2096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; result = 11642 } 00:00:03 i #2097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md } 00:00:03 d #2098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; result = 140 } 00:00:03 d #2099 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Kitty.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #2100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub } 00:00:03 d #2101 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; result = 12772 } 00:00:03 i #2102 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf } 00:00:03 d #2103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; result = 13016 } 00:00:03 i #2104 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html } 00:00:03 d #2105 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; result = 39849 } 00:00:03 i #2106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub } 00:00:03 d #2107 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub; new_path = c:/home/git/vault/dist/data/history/history.md.epub; result = 11762 } 00:00:03 i #2108 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf } 00:00:03 d #2109 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.md.pdf; result = 34189 } 00:00:03 i #2110 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html } 00:00:03 d #2111 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html; new_path = c:/home/git/vault/dist/data/history/history.md.html; result = 31531 } 00:00:03 i #2112 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md } 00:00:03 d #2113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.hangul.md; result = 23503 } 00:00:04 d #2114 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2115 > '92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7' 00:00:04 v #2116 > d328e42faa6744c53ddc51cce73e99babf354294 00:00:04 v #2117 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2118 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2119 > '26120b2e92375b6d6f8185081d4c976c28f37a56' 00:00:04 v #2120 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub } 00:00:04 d #2122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; result = 5496 } 00:00:04 i #2123 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf } 00:00:04 v #2124 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; result = 4134 } 00:00:04 i #2126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html } 00:00:04 d #2127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; result = 10068 } 00:00:04 i #2128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub } 00:00:04 d #2129 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/biology/biology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; result = 5439 } 00:00:04 i #2131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf } 00:00:04 d #2132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; result = 5669 } 00:00:04 i #2133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html } 00:00:04 d #2134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; result = 10042 } 00:00:04 v #2135 > f238a467d3cdbf24b27bc8955e11fc8be38784f5 00:00:04 i #2136 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md } 00:00:04 d #2137 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; result = 88 } 00:00:04 d #2138 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2139 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2140 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub } 00:00:04 d #2141 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; result = 6641 } 00:00:04 i #2142 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf } 00:00:04 d #2143 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; result = 6839 } 00:00:04 i #2144 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html } 00:00:04 v #2145 > 'e65dada639871ba283a4d62ff2d2e9b30aef57ca' 00:00:04 d #2146 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; result = 16762 } 00:00:04 i #2147 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub } 00:00:04 d #2148 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; result = 6626 } 00:00:04 i #2149 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf } 00:00:04 d #2150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; result = 19144 } 00:00:04 i #2151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html } 00:00:04 d #2152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; result = 22886 } 00:00:04 i #2153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md } 00:00:04 d #2154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; result = 3844 } 00:00:04 v #2155 > 'ec8cc309cc04d193ab3779a9a83894281f55c1fb' 00:00:04 d #2156 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/powershell.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2157 > 'b61ba948805fe014979b6a8ed1873009ba516603' 00:00:04 v #2158 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2159 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2160 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2161 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Kitty.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2162 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2163 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2164 > 92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7 00:00:04 v #2165 > 26120b2e92375b6d6f8185081d4c976c28f37a56 00:00:04 v #2166 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2167 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub } 00:00:04 v #2168 > 'c260bf13b4742cdacca39c111d4253fb07b1925b' 00:00:04 d #2169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; result = 5656 } 00:00:04 i #2170 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf } 00:00:04 d #2171 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; result = 4853 } 00:00:04 i #2172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html } 00:00:04 d #2173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; result = 10307 } 00:00:04 i #2174 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub } 00:00:04 d #2175 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; result = 5536 } 00:00:04 i #2176 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf } 00:00:04 d #2177 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; result = 8059 } 00:00:04 i #2178 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html } 00:00:04 d #2179 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; result = 10171 } 00:00:04 i #2180 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md } 00:00:04 d #2181 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; result = 339 } 00:00:04 v #2182 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2183 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2184 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub } 00:00:04 d #2185 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; result = 5941 } 00:00:04 i #2186 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf } 00:00:04 d #2187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; result = 4082 } 00:00:04 i #2188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html } 00:00:04 d #2189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; result = 11371 } 00:00:04 i #2190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub } 00:00:04 d #2191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; result = 5715 } 00:00:04 i #2192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf } 00:00:04 d #2193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; result = 8627 } 00:00:04 i #2194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html } 00:00:04 d #2195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; result = 10742 } 00:00:04 i #2196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md } 00:00:04 d #2197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; result = 1308 } 00:00:04 d #2198 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/books/books.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2199 > e65dada639871ba283a4d62ff2d2e9b30aef57ca 00:00:04 v #2200 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2201 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2202 > '28de73bf2bd7f24a583576578739461918ed105c' 00:00:04 v #2203 > ec8cc309cc04d193ab3779a9a83894281f55c1fb 00:00:04 v #2204 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub } 00:00:04 d #2206 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; result = 63431 } 00:00:04 v #2207 > b61ba948805fe014979b6a8ed1873009ba516603 00:00:04 i #2208 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf } 00:00:04 d #2209 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; result = 110311 } 00:00:04 i #2210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html } 00:00:04 d #2211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; result = 328105 } 00:00:04 i #2212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub } 00:00:04 v #2213 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub; new_path = c:/home/git/vault/dist/data/music/music.md.epub; result = 57541 } 00:00:04 i #2215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf } 00:00:04 d #2216 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/powershell.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2217 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.md.pdf; result = 270103 } 00:00:04 i #2219 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html } 00:00:04 d #2220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html; new_path = c:/home/git/vault/dist/data/music/music.md.html; result = 234838 } 00:00:04 i #2221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md } 00:00:04 i #2222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub } 00:00:04 d #2223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.hangul.md; result = 268501 } 00:00:04 d #2224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; result = 5558 } 00:00:04 i #2225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf } 00:00:04 d #2226 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; result = 4628 } 00:00:04 i #2227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html } 00:00:04 d #2228 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2229 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; result = 11668 } 00:00:04 i #2230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub } 00:00:04 d #2231 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; result = 5490 } 00:00:04 i #2232 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf } 00:00:04 d #2233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; result = 4815 } 00:00:04 i #2234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html } 00:00:04 d #2235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; result = 11636 } 00:00:04 i #2236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md } 00:00:04 d #2237 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; result = 137 } 00:00:04 v #2238 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2239 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub } 00:00:04 d #2240 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Luckyystrike.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; result = 6081 } 00:00:04 i #2242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf } 00:00:04 d #2243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; result = 4473 } 00:00:04 i #2244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html } 00:00:04 d #2245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; result = 11788 } 00:00:04 i #2246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub } 00:00:04 d #2247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; result = 5829 } 00:00:04 i #2248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf } 00:00:04 d #2249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; result = 9793 } 00:00:04 i #2250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html } 00:00:04 v #2251 > '455601e4dd7acd186e2b720c67ec48013537f743' 00:00:04 d #2252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; result = 10988 } 00:00:04 i #2253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md } 00:00:04 d #2254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; result = 1679 } 00:00:04 d #2255 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hunting/hunting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2256 > '5fabbc5009e36457c673ab281ad24ae700224001' 00:00:04 v #2257 > c260bf13b4742cdacca39c111d4253fb07b1925b 00:00:04 v #2258 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2259 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2260 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2260 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/books/books.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2262 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2263 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub } 00:00:04 d #2264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; result = 29771 } 00:00:04 i #2265 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf } 00:00:04 d #2266 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; result = 38567 } 00:00:04 i #2267 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html } 00:00:04 d #2268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; result = 134644 } 00:00:04 i #2269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub } 00:00:04 d #2270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.md.epub; result = 26856 } 00:00:04 i #2271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf } 00:00:04 d #2272 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; result = 116434 } 00:00:04 i #2273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html } 00:00:04 d #2274 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.md.html; result = 108241 } 00:00:04 i #2275 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md } 00:00:04 d #2276 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; result = 104543 } 00:00:04 d #2277 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2278 > 28de73bf2bd7f24a583576578739461918ed105c 00:00:04 v #2279 > 'f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4' 00:00:04 v #2280 > '0dfb76b4eb66823a9d64e6d9832084838f0931aa' 00:00:04 v #2281 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2282 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub } 00:00:04 d #2283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; result = 5635 } 00:00:04 i #2284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf } 00:00:04 v #2285 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; result = 4498 } 00:00:04 i #2287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html } 00:00:04 d #2288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; result = 10338 } 00:00:04 i #2289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub } 00:00:04 d #2290 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2291 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; result = 5544 } 00:00:04 i #2292 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf } 00:00:04 d #2293 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; result = 7335 } 00:00:04 i #2294 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html } 00:00:04 d #2295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.md.html; result = 10258 } 00:00:04 i #2296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md } 00:00:04 d #2297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; result = 296 } 00:00:04 d #2298 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2299 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2300 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2301 > 'c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f' 00:00:04 v #2302 > 5fabbc5009e36457c673ab281ad24ae700224001 00:00:04 v #2303 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2304 > 455601e4dd7acd186e2b720c67ec48013537f743 00:00:04 d #2305 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hunting/hunting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2306 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2307 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub } 00:00:04 v #2308 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 v #2309 > 'df377f01f1b9f3670c7a12dc9fdd0acd84916774' 00:00:04 d #2310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; result = 10806 } 00:00:04 i #2311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf } 00:00:04 d #2312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; result = 11037 } 00:00:04 i #2313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub } 00:00:04 i #2314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html } 00:00:04 d #2315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; result = 12639 } 00:00:04 i #2316 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf } 00:00:04 d #2317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; result = 32966 } 00:00:04 i #2318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub } 00:00:04 d #2319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; result = 17450 } 00:00:04 d #2320 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub; new_path = c:/home/git/vault/dist/data/books/books.md.epub; result = 9917 } 00:00:04 i #2321 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html } 00:00:04 i #2322 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf } 00:00:04 d #2323 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; result = 52886 } 00:00:04 d #2323 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.md.pdf; result = 28934 } 00:00:04 i #2325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub } 00:00:04 i #2326 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html } 00:00:04 d #2327 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html; new_path = c:/home/git/vault/dist/data/books/books.md.html; result = 27228 } 00:00:04 d #2328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; result = 11682 } 00:00:04 i #2329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md } 00:00:04 i #2330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf } 00:00:04 d #2331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md; new_path = c:/home/git/vault/dist/data/books/books.hangul.md; result = 16083 } 00:00:04 d #2332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; result = 48468 } 00:00:04 i #2333 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html } 00:00:04 d #2334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; result = 41164 } 00:00:04 i #2335 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md } 00:00:04 d #2336 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/business/business.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; result = 33758 } 00:00:04 d #2338 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stacy_x3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2339 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2340 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2341 > f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4 00:00:04 v #2342 > '1860e1828367493856af5299d21caee1ade4df20' 00:00:04 v #2343 > 0dfb76b4eb66823a9d64e6d9832084838f0931aa 00:00:04 v #2344 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2345 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub } 00:00:04 d #2346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; result = 5919 } 00:00:04 i #2347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf } 00:00:04 d #2348 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; result = 4580 } 00:00:04 i #2349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html } 00:00:04 d #2350 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; result = 11560 } 00:00:04 i #2351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub } 00:00:04 d #2352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; result = 5732 } 00:00:04 i #2353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf } 00:00:04 d #2354 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; result = 9338 } 00:00:04 i #2355 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html } 00:00:04 d #2356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; result = 10841 } 00:00:04 i #2357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md } 00:00:04 d #2358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; result = 1497 } 00:00:04 v #2359 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2360 > c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f 00:00:04 d #2361 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2362 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2363 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub } 00:00:04 d #2365 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; result = 5562 } 00:00:04 i #2366 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf } 00:00:04 d #2367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; result = 4626 } 00:00:04 i #2368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html } 00:00:04 v #2369 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; result = 11680 } 00:00:04 i #2371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub } 00:00:04 d #2372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; result = 5497 } 00:00:04 i #2373 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub } 00:00:04 i #2374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf } 00:00:04 d #2375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; result = 21652 } 00:00:04 d #2376 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; result = 4868 } 00:00:04 i #2377 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf } 00:00:04 i #2378 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html } 00:00:04 d #2379 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; result = 11643 } 00:00:04 i #2380 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md } 00:00:04 d #2381 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; result = 26383 } 00:00:04 i #2382 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html } 00:00:04 d #2383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; result = 149 } 00:00:04 d #2384 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; result = 86605 } 00:00:04 i #2385 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub } 00:00:04 d #2386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; result = 19641 } 00:00:04 d #2387 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/mfc.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2388 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf } 00:00:04 d #2389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; result = 67970 } 00:00:04 i #2390 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html } 00:00:04 d #2391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; result = 63988 } 00:00:04 i #2392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md } 00:00:04 d #2393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; result = 62482 } 00:00:04 v #2394 > 'd093d5959b1aa80e6844338cdf0a2e38d9846fe6' 00:00:04 d #2395 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2396 > '58ba8dcbf16a6c08e6db4a9db3619c119f00757d' 00:00:04 v #2397 > df377f01f1b9f3670c7a12dc9fdd0acd84916774 00:00:04 v #2398 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2399 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/business/business.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2400 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2401 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2402 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub } 00:00:04 d #2404 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; result = 7770 } 00:00:04 i #2405 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf } 00:00:04 d #2406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; result = 7357 } 00:00:04 i #2407 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html } 00:00:04 d #2408 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; result = 19755 } 00:00:04 i #2409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub } 00:00:04 d #2410 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; result = 7203 } 00:00:04 i #2411 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf } 00:00:04 d #2412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; result = 15249 } 00:00:04 i #2413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html } 00:00:04 d #2414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; result = 16626 } 00:00:04 i #2415 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md } 00:00:04 d #2416 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; result = 8631 } 00:00:04 d #2417 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2418 > '574ee3a652500f3406dab750e9154ce6b4dbc09b' 00:00:04 v #2419 > 1860e1828367493856af5299d21caee1ade4df20 00:00:04 v #2420 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub } 00:00:04 v #2422 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2423 > '851a864bfefadeefdcb491f5c0dc83cd24bafccc' 00:00:04 d #2424 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; result = 12841 } 00:00:04 i #2426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf } 00:00:04 d #2427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; result = 19041 } 00:00:04 i #2428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html } 00:00:04 d #2429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; result = 49405 } 00:00:04 i #2430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub } 00:00:04 d #2431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.md.epub; result = 11660 } 00:00:04 i #2432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf } 00:00:04 d #2433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; result = 45782 } 00:00:04 i #2434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html } 00:00:04 d #2435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.md.html; result = 39515 } 00:00:04 i #2436 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md } 00:00:04 d #2437 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; result = 27401 } 00:00:04 d #2438 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2439 > '90d1370c18ccc4155bfa0452150965014b0f58eb' 00:00:04 v #2440 > 58ba8dcbf16a6c08e6db4a9db3619c119f00757d 00:00:04 v #2441 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2442 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/mfc.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2443 > d093d5959b1aa80e6844338cdf0a2e38d9846fe6 00:00:04 v #2444 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2445 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2446 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2447 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub } 00:00:04 d #2448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; result = 5564 } 00:00:04 i #2449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf } 00:00:04 d #2450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; result = 4843 } 00:00:04 i #2451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html } 00:00:04 v #2452 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; result = 11676 } 00:00:04 i #2454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub } 00:00:04 d #2455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; result = 5492 } 00:00:04 i #2456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf } 00:00:04 d #2457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; result = 4906 } 00:00:04 i #2458 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html } 00:00:04 i #2459 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub } 00:00:04 d #2460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; result = 11639 } 00:00:04 i #2461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md } 00:00:04 d #2462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; result = 7785 } 00:00:04 d #2463 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; result = 145 } 00:00:04 i #2464 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf } 00:00:04 d #2465 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; result = 6674 } 00:00:04 v #2466 > '49ff14103fb24b78a712c68eda596e167ee58322' 00:00:04 i #2467 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html } 00:00:04 d #2468 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; result = 22627 } 00:00:04 i #2469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub } 00:00:04 d #2470 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stephanie.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2471 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub; new_path = c:/home/git/vault/dist/data/business/business.md.epub; result = 7315 } 00:00:04 i #2472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf } 00:00:04 d #2473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.md.pdf; result = 18658 } 00:00:04 i #2474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html } 00:00:04 d #2475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html; new_path = c:/home/git/vault/dist/data/business/business.md.html; result = 19670 } 00:00:04 i #2476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md } 00:00:04 d #2477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md; new_path = c:/home/git/vault/dist/data/business/business.hangul.md; result = 7972 } 00:00:04 d #2478 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AdySweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2479 > 574ee3a652500f3406dab750e9154ce6b4dbc09b 00:00:04 v #2480 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2481 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2482 > '6dda630b53f346256f4dc3739236972a6374b3e7' 00:00:04 v #2483 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2484 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub } 00:00:04 d #2485 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; result = 5832 } 00:00:04 i #2486 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf } 00:00:04 d #2487 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; result = 5507 } 00:00:04 i #2488 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html } 00:00:04 d #2489 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; result = 11755 } 00:00:04 i #2490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub } 00:00:04 d #2491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; result = 5683 } 00:00:04 i #2492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf } 00:00:04 d #2493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; result = 9335 } 00:00:04 i #2494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html } 00:00:04 d #2495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; result = 11414 } 00:00:04 i #2496 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md } 00:00:04 d #2497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; result = 1226 } 00:00:04 v #2498 > 851a864bfefadeefdcb491f5c0dc83cd24bafccc 00:00:04 d #2499 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2500 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2501 > 90d1370c18ccc4155bfa0452150965014b0f58eb 00:00:04 d #2502 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2503 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub } 00:00:04 d #2505 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; result = 5614 } 00:00:04 i #2506 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf } 00:00:04 v #2507 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 v #2508 > 'd885db673a3eadbfc7bfed33142a1fa33e87152b' 00:00:04 d #2509 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; result = 4805 } 00:00:04 i #2510 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html } 00:00:04 i #2511 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub } 00:00:04 d #2512 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; result = 12575 } 00:00:04 i #2513 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub } 00:00:04 d #2514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; result = 5535 } 00:00:04 i #2515 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf } 00:00:04 d #2516 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; result = 5983 } 00:00:04 i #2517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf } 00:00:04 d #2518 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; result = 5546 } 00:00:04 d #2519 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; result = 8642 } 00:00:04 i #2520 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html } 00:00:04 i #2521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html } 00:00:04 d #2522 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; result = 11673 } 00:00:04 i #2523 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub } 00:00:04 v #2524 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2525 > '4ce4e5578a3377ea45aed9218cb0005a22029bbb' 00:00:04 v #2526 > 49ff14103fb24b78a712c68eda596e167ee58322 00:00:04 v #2527 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2528 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; result = 12399 } 00:00:04 d #2530 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; result = 5840 } 00:00:04 i #2531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md } 00:00:04 i #2532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf } 00:00:04 d #2533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; result = 1452 } 00:00:04 d #2534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; result = 11769 } 00:00:04 i #2535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html } 00:00:04 d #2536 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AdySweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; result = 11621 } 00:00:04 i #2538 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md } 00:00:04 i #2539 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub } 00:00:04 d #2540 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stephanie.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2541 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; result = 1349 } 00:00:04 d #2542 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; result = 5584 } 00:00:04 d #2543 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Missbaby8.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf } 00:00:04 d #2545 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; result = 3996 } 00:00:04 i #2546 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html } 00:00:04 d #2547 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; result = 10192 } 00:00:04 i #2548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub } 00:00:04 d #2549 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; result = 5492 } 00:00:04 i #2551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf } 00:00:04 d #2552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; result = 6517 } 00:00:04 i #2553 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html } 00:00:04 d #2554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; result = 10128 } 00:00:04 i #2555 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md } 00:00:04 d #2556 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; result = 204 } 00:00:04 d #2557 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2558 > '7f916cd510d5f0d2a2850689a5b05a12150a038e' 00:00:04 v #2559 > 6dda630b53f346256f4dc3739236972a6374b3e7 00:00:04 v #2560 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2561 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2562 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub } 00:00:04 d #2564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; result = 7205 } 00:00:04 i #2565 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf } 00:00:04 d #2566 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; result = 5408 } 00:00:04 i #2567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html } 00:00:04 d #2568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; result = 18962 } 00:00:04 i #2569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub } 00:00:04 d #2570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; result = 6701 } 00:00:04 i #2571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf } 00:00:04 d #2572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; result = 12455 } 00:00:04 i #2573 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html } 00:00:04 d #2574 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; result = 15388 } 00:00:04 i #2575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md } 00:00:04 d #2576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; result = 8203 } 00:00:04 d #2577 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2578 > 4ce4e5578a3377ea45aed9218cb0005a22029bbb 00:00:04 v #2579 > '87fa470e327b8b916b9ee66974d7484564cde79c' 00:00:04 v #2580 > d885db673a3eadbfc7bfed33142a1fa33e87152b 00:00:04 v #2581 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2582 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2583 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 i #2584 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub } 00:00:04 d #2585 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; result = 5566 } 00:00:04 i #2586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf } 00:00:04 d #2587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; result = 4627 } 00:00:04 i #2588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html } 00:00:04 d #2589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; result = 11677 } 00:00:04 v #2590 > 'b036d7daa1eaa41f6831e80a72c6ff7fc97752dc' 00:00:04 i #2591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub } 00:00:04 d #2592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; result = 5493 } 00:00:04 i #2593 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf } 00:00:04 d #2594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; result = 5069 } 00:00:04 v #2594 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html } 00:00:04 d #2597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; result = 11639 } 00:00:04 v #2598 > '03383a9384a0859e4842d78e86808657db8be433' 00:00:04 i #2599 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md } 00:00:04 d #2600 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; result = 146 } 00:00:04 i #2601 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub } 00:00:04 d #2602 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; result = 5560 } 00:00:04 i #2603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf } 00:00:04 d #2604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; result = 4626 } 00:00:04 i #2605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html } 00:00:04 d #2606 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/aliceisonfire.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; result = 11674 } 00:00:04 i #2608 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub } 00:00:04 d #2609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; result = 5491 } 00:00:04 i #2610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf } 00:00:04 d #2611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; result = 4759 } 00:00:04 i #2612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html } 00:00:04 d #2613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; result = 11640 } 00:00:04 i #2614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md } 00:00:04 d #2615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; result = 143 } 00:00:04 v #2616 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2617 > 7f916cd510d5f0d2a2850689a5b05a12150a038e 00:00:04 d #2618 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/TinaHale.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2619 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2620 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2621 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2622 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2623 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub } 00:00:04 v #2624 > 'e227bef891dcfad0b8ab5951285b9902c2df57bf' 00:00:04 d #2625 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; result = 5585 } 00:00:04 i #2626 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf } 00:00:04 d #2627 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; result = 2204 } 00:00:04 i #2628 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html } 00:00:04 d #2629 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; result = 10177 } 00:00:04 i #2630 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub } 00:00:04 d #2631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; result = 5494 } 00:00:04 i #2632 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf } 00:00:04 d #2633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; result = 2203 } 00:00:05 i #2634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html } 00:00:05 d #2635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; result = 10078 } 00:00:05 i #2636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md } 00:00:05 d #2637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; result = 239 } 00:00:05 d #2638 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2639 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2640 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2641 > 87fa470e327b8b916b9ee66974d7484564cde79c 00:00:05 v #2642 > 'f02b7d2b818094bb639b99d4d551937178eedb00' 00:00:05 v #2643 > 03383a9384a0859e4842d78e86808657db8be433 00:00:05 v #2644 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2645 > '284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf' 00:00:05 i #2646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub } 00:00:05 v #2647 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; result = 5561 } 00:00:05 i #2649 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf } 00:00:05 v #2650 > b036d7daa1eaa41f6831e80a72c6ff7fc97752dc 00:00:05 d #2651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; result = 4776 } 00:00:05 i #2652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html } 00:00:05 d #2653 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2654 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; result = 11675 } 00:00:05 i #2655 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub } 00:00:05 d #2656 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; result = 5494 } 00:00:05 i #2657 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf } 00:00:05 v #2658 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; result = 5044 } 00:00:05 i #2660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html } 00:00:05 d #2661 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; result = 11640 } 00:00:05 i #2662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub } 00:00:05 i #2663 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md } 00:00:05 d #2664 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; result = 144 } 00:00:05 d #2665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; result = 10248 } 00:00:05 i #2666 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf } 00:00:05 d #2667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; result = 15362 } 00:00:05 i #2668 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html } 00:00:05 d #2669 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; result = 33121 } 00:00:05 i #2670 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub } 00:00:05 d #2671 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/MissLullu.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2672 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.md.epub; result = 9420 } 00:00:05 i #2673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf } 00:00:05 d #2674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; result = 38935 } 00:00:05 i #2675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html } 00:00:05 d #2676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.md.html; result = 26664 } 00:00:05 i #2677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md } 00:00:05 d #2678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; result = 16490 } 00:00:05 v #2679 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2680 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2681 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/TinaHale.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2682 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #2683 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub } 00:00:05 d #2684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; result = 6093 } 00:00:05 i #2685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf } 00:00:05 d #2686 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; result = 5663 } 00:00:05 i #2687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html } 00:00:05 d #2688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; result = 13391 } 00:00:05 i #2689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub } 00:00:05 d #2690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; result = 5871 } 00:00:05 i #2691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf } 00:00:05 d #2692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; result = 10914 } 00:00:05 i #2693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html } 00:00:05 d #2694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; result = 12292 } 00:00:05 i #2695 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md } 00:00:05 d #2696 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; result = 2889 } 00:00:05 d #2697 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2698 > '850aeca2369ebf42613d2a00e1c7854f9693c49f' 00:00:05 v #2699 > e227bef891dcfad0b8ab5951285b9902c2df57bf 00:00:05 v #2700 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2701 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2702 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2703 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub } 00:00:05 d #2704 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; result = 38622 } 00:00:05 i #2705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf } 00:00:05 d #2706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; result = 64002 } 00:00:05 i #2707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html } 00:00:05 d #2708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; result = 212516 } 00:00:05 i #2709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub } 00:00:05 d #2710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.md.epub; result = 36741 } 00:00:05 i #2711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf } 00:00:05 d #2712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; result = 202003 } 00:00:05 i #2713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html } 00:00:05 v #2714 > f02b7d2b818094bb639b99d4d551937178eedb00 00:00:05 d #2715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.md.html; result = 252122 } 00:00:05 i #2716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md } 00:00:05 d #2717 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; result = 150631 } 00:00:05 d #2718 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2719 > '141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef' 00:00:05 v #2720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2721 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub } 00:00:05 d #2722 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; result = 5566 } 00:00:05 i #2723 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf } 00:00:05 d #2724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; result = 4626 } 00:00:05 i #2725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html } 00:00:05 d #2726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; result = 11683 } 00:00:05 i #2727 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub } 00:00:05 d #2728 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; result = 5494 } 00:00:05 i #2729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf } 00:00:05 d #2730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; result = 4766 } 00:00:05 i #2731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html } 00:00:05 d #2732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; result = 11644 } 00:00:05 i #2733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md } 00:00:05 v #2734 > 284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf 00:00:05 d #2735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; result = 152 } 00:00:05 v #2736 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2737 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Angrykat.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2738 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/MissLullu.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2739 > '1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c' 00:00:05 v #2740 > 'c23b3c88e5cb9e9ab6f57e5b005ddd546c262903' 00:00:05 v #2741 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2742 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub } 00:00:05 d #2743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; result = 5562 } 00:00:05 i #2744 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf } 00:00:05 d #2745 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; result = 4627 } 00:00:05 i #2746 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html } 00:00:05 d #2747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; result = 11674 } 00:00:05 i #2748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub } 00:00:05 d #2749 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; result = 5492 } 00:00:05 i #2750 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf } 00:00:05 d #2751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; result = 4886 } 00:00:05 i #2752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html } 00:00:05 d #2753 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; result = 11639 } 00:00:05 i #2754 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md } 00:00:05 v #2755 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; result = 143 } 00:00:05 d #2757 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2758 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/WhitneyR.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2759 > 850aeca2369ebf42613d2a00e1c7854f9693c49f 00:00:05 v #2760 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2761 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2762 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub } 00:00:05 d #2764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; result = 5549 } 00:00:05 i #2765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf } 00:00:05 d #2766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; result = 3963 } 00:00:05 i #2767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html } 00:00:05 d #2768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; result = 10141 } 00:00:05 i #2769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub } 00:00:05 d #2770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; result = 5463 } 00:00:05 i #2771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf } 00:00:05 d #2772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; result = 6226 } 00:00:05 i #2773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html } 00:00:05 d #2774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; result = 10087 } 00:00:05 i #2775 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md } 00:00:05 d #2776 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; result = 174 } 00:00:05 d #2777 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2778 > '434c960bdfe32a4a92597d61bcc65b77abc6ba1b' 00:00:05 v #2779 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2780 > '299c44f77ebc021b85ead370f66e763056c1a5a7' 00:00:05 d #2781 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2782 > 141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef 00:00:05 v #2783 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2784 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Angrykat.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2785 > 1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c 00:00:05 v #2786 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub } 00:00:05 v #2788 > 'f98fd45751bb507ec323e46218ab9a97065127d7' 00:00:05 d #2789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; result = 5561 } 00:00:05 i #2790 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf } 00:00:05 d #2791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; result = 4625 } 00:00:05 i #2792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html } 00:00:05 d #2793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; result = 11674 } 00:00:05 i #2794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub } 00:00:05 v #2795 > c23b3c88e5cb9e9ab6f57e5b005ddd546c262903 00:00:05 d #2796 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; result = 5495 } 00:00:05 i #2797 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf } 00:00:05 d #2798 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; result = 4937 } 00:00:05 i #2799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html } 00:00:05 d #2800 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; result = 11640 } 00:00:05 i #2801 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md } 00:00:05 d #2802 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; result = 146 } 00:00:05 v #2803 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub } 00:00:05 d #2805 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/NicolePowell.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; result = 12317 } 00:00:05 i #2807 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf } 00:00:05 d #2808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; result = 12619 } 00:00:05 i #2809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html } 00:00:05 d #2810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; result = 32163 } 00:00:05 i #2811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub } 00:00:05 d #2812 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; result = 11214 } 00:00:05 i #2813 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf } 00:00:05 d #2814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; result = 43968 } 00:00:05 i #2815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html } 00:00:05 d #2816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; result = 25325 } 00:00:05 i #2817 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md } 00:00:05 d #2818 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; result = 19270 } 00:00:05 v #2819 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2820 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2821 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2822 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #2823 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub } 00:00:05 d #2824 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; result = 6961 } 00:00:05 i #2825 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf } 00:00:05 d #2826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; result = 2202 } 00:00:05 i #2827 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html } 00:00:05 d #2828 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; result = 21635 } 00:00:05 i #2829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub } 00:00:05 v #2830 > '794396ca6498adbc3ebe3cce207803372f34e562' 00:00:05 d #2831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; result = 6642 } 00:00:05 i #2832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf } 00:00:05 d #2833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; result = 2203 } 00:00:05 i #2834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html } 00:00:05 d #2835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; result = 17455 } 00:00:05 i #2836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md } 00:00:05 d #2837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; result = 10469 } 00:00:05 d #2838 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2839 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2840 > 434c960bdfe32a4a92597d61bcc65b77abc6ba1b 00:00:05 d #2841 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2842 > 299c44f77ebc021b85ead370f66e763056c1a5a7 00:00:05 v #2843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub } 00:00:05 d #2845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; result = 7660 } 00:00:05 i #2846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf } 00:00:05 d #2847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; result = 7304 } 00:00:05 i #2848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html } 00:00:05 d #2849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; result = 19553 } 00:00:05 i #2850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub } 00:00:05 d #2851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; result = 7110 } 00:00:05 i #2852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf } 00:00:05 d #2853 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; result = 14838 } 00:00:05 i #2854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html } 00:00:05 d #2855 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; result = 16513 } 00:00:05 i #2856 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md } 00:00:05 v #2857 > '668f5e089fc908abc6eb2a47b2ff61beb7cb633f' 00:00:05 d #2858 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; result = 8340 } 00:00:05 d #2859 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/systems.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2860 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub } 00:00:05 d #2862 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; result = 5563 } 00:00:05 i #2863 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf } 00:00:05 d #2864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; result = 4626 } 00:00:05 i #2865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html } 00:00:05 v #2866 > '26dcc4e83c56ad8b2a105ae037c8d26685ce75cb' 00:00:05 v #2867 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; result = 11677 } 00:00:05 i #2869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub } 00:00:05 v #2870 > f98fd45751bb507ec323e46218ab9a97065127d7 00:00:05 d #2871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; result = 5492 } 00:00:05 i #2872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf } 00:00:05 d #2873 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; result = 4963 } 00:00:05 d #2874 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html } 00:00:05 d #2876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; result = 11639 } 00:00:05 i #2877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md } 00:00:05 d #2878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; result = 147 } 00:00:05 d #2879 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AubriToffee.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2880 > '7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315' 00:00:05 v #2881 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2882 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2883 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2884 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub } 00:00:05 v #2885 > 794396ca6498adbc3ebe3cce207803372f34e562 00:00:05 d #2886 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; result = 5562 } 00:00:05 i #2887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf } 00:00:05 v #2888 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2889 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; result = 4624 } 00:00:05 d #2890 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2892 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html } 00:00:05 v #2891 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2893 > '4c062bf0a367b772b3534f98c696ebafc33a1150' 00:00:05 d #2894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; result = 11677 } 00:00:05 i #2895 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub } 00:00:05 i #2896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub } 00:00:05 d #2897 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; result = 5492 } 00:00:05 d #2898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; result = 6895 } 00:00:05 i #2899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf } 00:00:05 i #2900 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf } 00:00:05 d #2901 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; result = 3972 } 00:00:05 d #2902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; result = 5055 } 00:00:05 i #2903 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html } 00:00:05 i #2904 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html } 00:00:05 d #2905 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; result = 11639 } 00:00:05 d #2906 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; result = 14287 } 00:00:05 i #2907 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md } 00:00:05 i #2908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub } 00:00:05 d #2909 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; result = 147 } 00:00:05 d #2910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.md.epub; result = 6492 } 00:00:05 i #2911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf } 00:00:05 d #2912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; result = 10284 } 00:00:05 i #2913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html } 00:00:05 d #2914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.md.html; result = 12802 } 00:00:05 i #2915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md } 00:00:05 d #2916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; result = 4096 } 00:00:05 d #2917 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yarrow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2918 > 'f8e5972d7a116efc09e6f689052a2c00ef110f18' 00:00:05 v #2919 > 668f5e089fc908abc6eb2a47b2ff61beb7cb633f 00:00:05 d #2920 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/numbers/numbers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2921 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2922 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/systems.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2923 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2924 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2925 > 26dcc4e83c56ad8b2a105ae037c8d26685ce75cb 00:00:05 v #2926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2927 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub } 00:00:05 d #2928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; result = 5567 } 00:00:05 i #2929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf } 00:00:05 d #2930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; result = 4623 } 00:00:05 i #2931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html } 00:00:05 d #2932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; result = 11680 } 00:00:05 i #2933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub } 00:00:05 d #2934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; result = 5495 } 00:00:05 i #2935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf } 00:00:05 d #2936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; result = 5026 } 00:00:05 i #2937 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html } 00:00:05 d #2938 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; result = 11643 } 00:00:05 i #2939 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md } 00:00:05 v #2940 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; result = 149 } 00:00:05 i #2942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub } 00:00:05 d #2943 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Olivia.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2944 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; result = 5746 } 00:00:05 i #2945 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf } 00:00:05 d #2946 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; result = 4759 } 00:00:05 i #2947 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html } 00:00:05 d #2948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; result = 10812 } 00:00:05 i #2949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub } 00:00:05 d #2950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; result = 5598 } 00:00:05 i #2951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf } 00:00:05 d #2952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; result = 7620 } 00:00:05 i #2953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html } 00:00:05 d #2954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; result = 10522 } 00:00:05 i #2955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md } 00:00:05 d #2956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; result = 755 } 00:00:05 d #2957 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2958 > 'd52eee26d16ca6ea0d4f412a90aed750bab95042' 00:00:05 v #2959 > 7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315 00:00:05 v #2960 > 'a1a5b3322c5350a719f7986e9d4ae98c35eee5b4' 00:00:05 v #2961 > 4c062bf0a367b772b3534f98c696ebafc33a1150 00:00:05 v #2962 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2963 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yarrow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2964 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2965 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub } 00:00:05 v #2966 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2967 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; result = 5544 } 00:00:05 i #2968 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf } 00:00:05 d #2969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; result = 3849 } 00:00:05 i #2970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html } 00:00:05 v #2971 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; result = 10331 } 00:00:05 i #2973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub } 00:00:05 d #2974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; result = 5462 } 00:00:05 d #2975 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/numbers/numbers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2976 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf } 00:00:05 d #2977 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; result = 6189 } 00:00:05 i #2978 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html } 00:00:05 i #2979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub } 00:00:05 d #2980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; result = 10254 } 00:00:05 i #2981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md } 00:00:05 d #2982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; result = 38046 } 00:00:05 v #2983 > f8e5972d7a116efc09e6f689052a2c00ef110f18 00:00:05 d #2984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; result = 275 } 00:00:05 i #2985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf } 00:00:05 d #2986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; result = 76713 } 00:00:05 i #2987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html } 00:00:05 d #2988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; result = 209377 } 00:00:05 d #2989 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #2990 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub } 00:00:05 d #2991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.md.epub; result = 34928 } 00:00:05 i #2992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf } 00:00:05 d #2993 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; result = 167694 } 00:00:05 i #2994 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html } 00:00:05 d #2995 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.md.html; result = 168633 } 00:00:05 i #2996 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md } 00:00:05 d #2997 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; result = 146207 } 00:00:05 d #2998 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2999 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #3000 > '1a2393e1a9c94d35872b7e923027423963dbef31' 00:00:05 i #3001 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub } 00:00:05 v #3002 > 'ffab8f376d7f53d106f540c2ac421f5555f14780' 00:00:05 d #3003 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; result = 5566 } 00:00:05 i #3004 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf } 00:00:05 d #3005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; result = 4625 } 00:00:05 i #3006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html } 00:00:05 d #3007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; result = 11683 } 00:00:05 i #3008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub } 00:00:05 d #3009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; result = 5494 } 00:00:05 i #3010 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf } 00:00:05 d #3011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; result = 4950 } 00:00:05 i #3012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html } 00:00:05 d #3013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; result = 11642 } 00:00:05 i #3014 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md } 00:00:05 d #3015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; result = 152 } 00:00:05 d #3016 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AwesomeEly.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #3017 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3018 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Olivia.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3019 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3020 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3021 > d52eee26d16ca6ea0d4f412a90aed750bab95042 00:00:05 v #3022 > a1a5b3322c5350a719f7986e9d4ae98c35eee5b4 00:00:05 v #3023 > '4a4ea71442cf5cddadf09561d5d90f8793a3d59b' 00:00:05 v #3024 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub } 00:00:05 d #3026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; result = 5557 } 00:00:05 i #3027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf } 00:00:05 d #3028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; result = 4624 } 00:00:05 i #3029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html } 00:00:05 d #3030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; result = 11668 } 00:00:05 i #3031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub } 00:00:05 v #3032 > '710dc0fd7f3fc16a762129d9543c064715dd40d2' 00:00:05 d #3033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; result = 5488 } 00:00:05 i #3034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf } 00:00:05 d #3035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; result = 4931 } 00:00:05 v #3036 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html } 00:00:05 d #3038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; result = 11637 } 00:00:05 i #3039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md } 00:00:05 d #3040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; result = 137 } 00:00:05 i #3041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub } 00:00:05 v #3042 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; result = 6316 } 00:00:05 i #3044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf } 00:00:05 d #3045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; result = 8509 } 00:00:05 d #3046 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #3047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html } 00:00:05 d #3048 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yukenzi.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #3049 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; result = 13256 } 00:00:05 i #3050 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub } 00:00:05 d #3051 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; result = 6368 } 00:00:05 i #3052 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf } 00:00:05 d #3053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; result = 20721 } 00:00:05 i #3054 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html } 00:00:05 d #3055 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; result = 19554 } 00:00:05 i #3056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md } 00:00:05 d #3057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; result = 2058 } 00:00:05 v #3058 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3059 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #3060 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3061 > '11c740033ce73b721e730b70049b51f65f1f3163' 00:00:05 v #3062 > 1a2393e1a9c94d35872b7e923027423963dbef31 00:00:05 v #3063 > ffab8f376d7f53d106f540c2ac421f5555f14780 00:00:05 v #3064 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #3065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 i #3066 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub } 00:00:05 d #3067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; result = 5563 } 00:00:05 i #3068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf } 00:00:05 d #3069 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #3070 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; result = 4627 } 00:00:05 v #3071 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html } 00:00:05 d #3073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; result = 11674 } 00:00:05 i #3074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub } 00:00:05 i #3075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub } 00:00:05 d #3076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; result = 5490 } 00:00:05 i #3077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf } 00:00:05 d #3078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; result = 12693 } 00:00:05 i #3079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf } 00:00:05 d #3080 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; result = 4814 } 00:00:05 i #3081 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html } 00:00:05 d #3082 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; result = 13093 } 00:00:05 i #3083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html } 00:00:05 d #3084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; result = 11637 } 00:00:05 i #3085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md } 00:00:05 d #3086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; result = 33732 } 00:00:05 i #3087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub } 00:00:05 d #3088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; result = 143 } 00:00:05 d #3089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; result = 11606 } 00:00:05 i #3090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf } 00:00:05 d #3091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; result = 45640 } 00:00:05 i #3092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html } 00:00:05 d #3093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; result = 26660 } 00:00:05 d #3094 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Red_Flower203.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #3095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md } 00:00:05 d #3096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; result = 20859 } 00:00:05 d #3097 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/work.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #3098 > 4a4ea71442cf5cddadf09561d5d90f8793a3d59b 00:00:05 v #3099 > '0c2e8945d1037cf0f10232f091d83d282a3ad155' 00:00:05 v #3100 > 710dc0fd7f3fc16a762129d9543c064715dd40d2 00:00:05 v #3101 > 'a1d96e6335c70898790582735eb8154509a5c803' 00:00:05 v #3102 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub } 00:00:05 d #3104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; result = 5507 } 00:00:05 i #3105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf } 00:00:05 d #3106 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; result = 4375 } 00:00:05 i #3107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html } 00:00:05 d #3108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; result = 10079 } 00:00:05 i #3109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub } 00:00:05 d #3110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; result = 5446 } 00:00:05 i #3111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf } 00:00:05 d #3112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; result = 5997 } 00:00:05 i #3113 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html } 00:00:05 v #3114 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #3115 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3116 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; result = 10053 } 00:00:05 i #3117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md } 00:00:05 d #3118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; result = 99 } 00:00:05 i #3119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub } 00:00:05 d #3120 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; result = 5507 } 00:00:05 i #3121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf } 00:00:05 d #3122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; result = 4534 } 00:00:05 v #3123 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 i #3124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html } 00:00:05 d #3125 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #3126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; result = 10083 } 00:00:05 d #3127 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #3128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub } 00:00:05 d #3129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; result = 5444 } 00:00:05 i #3130 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf } 00:00:05 d #3131 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; result = 6116 } 00:00:05 i #3132 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html } 00:00:05 d #3133 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #3134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; result = 10055 } 00:00:05 i #3135 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md } 00:00:05 d #3136 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; result = 102 } 00:00:05 d #3137 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #3138 > 11c740033ce73b721e730b70049b51f65f1f3163 00:00:05 v #3139 > '04ac04f2d639d9f1128e01a92c74324159d9a8b0' 00:00:05 v #3140 > '23887617bd91a3849e5506af095bf349436acb0e' 00:00:05 v #3141 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3142 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub } 00:00:06 v #3143 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3144 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; result = 5561 } 00:00:06 i #3145 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf } 00:00:06 v #3146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3147 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; result = 4625 } 00:00:06 i #3148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html } 00:00:06 d #3149 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; result = 11677 } 00:00:06 i #3151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub } 00:00:06 d #3152 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3153 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; result = 5494 } 00:00:06 i #3154 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf } 00:00:06 d #3155 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; result = 5080 } 00:00:06 i #3156 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html } 00:00:06 d #3157 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; result = 11641 } 00:00:06 i #3158 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md } 00:00:06 d #3159 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; result = 146 } 00:00:06 d #3160 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3161 > 0c2e8945d1037cf0f10232f091d83d282a3ad155 00:00:06 v #3162 > '8e9bc86a9063f1b960e5ed058ec223d973dfa028' 00:00:06 v #3163 > a1d96e6335c70898790582735eb8154509a5c803 00:00:06 v #3164 > '6a22d89b7993d2991e660a9ce858268e16c906fe' 00:00:06 v #3165 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3165 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3167 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3168 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub } 00:00:06 d #3169 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3170 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub } 00:00:06 d #3171 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; result = 5619 } 00:00:06 i #3172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf } 00:00:06 d #3173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; result = 5562 } 00:00:06 v #3174 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3175 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf } 00:00:06 d #3176 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; result = 4322 } 00:00:06 i #3177 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html } 00:00:06 d #3178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; result = 4625 } 00:00:06 i #3179 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html } 00:00:06 d #3180 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; result = 10812 } 00:00:06 i #3181 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub } 00:00:06 d #3182 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; result = 11671 } 00:00:06 d #3183 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; result = 5513 } 00:00:06 i #3184 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub } 00:00:06 i #3185 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf } 00:00:06 d #3186 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; result = 5492 } 00:00:06 d #3187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; result = 6656 } 00:00:06 i #3188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf } 00:00:06 i #3189 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html } 00:00:06 d #3190 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; result = 4991 } 00:00:06 d #3191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; result = 10655 } 00:00:06 i #3193 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html } 00:00:06 i #3194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md } 00:00:06 d #3195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; result = 578 } 00:00:06 d #3196 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; result = 11638 } 00:00:06 i #3197 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md } 00:00:06 d #3198 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; result = 140 } 00:00:06 d #3199 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3200 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chores/chores.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3201 > 23887617bd91a3849e5506af095bf349436acb0e 00:00:06 v #3202 > 04ac04f2d639d9f1128e01a92c74324159d9a8b0 00:00:06 v #3203 > 'e182749a69de369b41601d59b66d66fda8c320b8' 00:00:06 v #3204 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3205 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub } 00:00:06 v #3207 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; result = 5704 } 00:00:06 i #3209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf } 00:00:06 d #3210 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; result = 4821 } 00:00:06 i #3212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html } 00:00:06 i #3213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub } 00:00:06 d #3214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; result = 10407 } 00:00:06 i #3215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub } 00:00:06 d #3216 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; result = 5573 } 00:00:06 i #3217 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf } 00:00:06 d #3218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; result = 5569 } 00:00:06 d #3219 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; result = 4975 } 00:00:06 i #3220 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf } 00:00:06 i #3221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html } 00:00:06 d #3222 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; result = 7732 } 00:00:06 d #3223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; result = 11684 } 00:00:06 i #3224 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html } 00:00:06 i #3225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub } 00:00:06 d #3226 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; result = 10236 } 00:00:06 d #3227 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; result = 5498 } 00:00:06 i #3228 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md } 00:00:06 i #3229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf } 00:00:06 d #3230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; result = 440 } 00:00:06 d #3231 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; result = 5495 } 00:00:06 i #3232 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html } 00:00:06 d #3233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; result = 11644 } 00:00:06 i #3234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md } 00:00:06 d #3235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; result = 153 } 00:00:06 d #3236 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/tasks.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3237 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RocknRose.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3238 > 8e9bc86a9063f1b960e5ed058ec223d973dfa028 00:00:06 v #3239 > 6a22d89b7993d2991e660a9ce858268e16c906fe 00:00:06 v #3240 > '9f027fb632360364fdede8801655256872d810e4' 00:00:06 v #3241 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3242 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3243 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub } 00:00:06 i #3245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub } 00:00:06 d #3246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; result = 5530 } 00:00:06 d #3246 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; result = 5672 } 00:00:06 d #3248 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf } 00:00:06 i #3250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf } 00:00:06 d #3251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; result = 4886 } 00:00:06 d #3251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; result = 3856 } 00:00:06 i #3253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html } 00:00:06 i #3253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html } 00:00:06 d #3255 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; result = 10340 } 00:00:06 d #3256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; result = 10521 } 00:00:06 i #3257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub } 00:00:06 i #3258 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub } 00:00:06 d #3259 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; result = 5460 } 00:00:06 d #3260 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; result = 5547 } 00:00:06 i #3261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf } 00:00:06 i #3262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf } 00:00:06 d #3263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; result = 5944 } 00:00:06 v #3264 > '6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269' 00:00:06 i #3265 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html } 00:00:06 d #3266 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; result = 7722 } 00:00:06 d #3267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; result = 10260 } 00:00:06 i #3268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html } 00:00:06 i #3269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md } 00:00:06 d #3270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; result = 10351 } 00:00:06 d #3271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; result = 284 } 00:00:06 i #3272 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md } 00:00:06 d #3273 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; result = 465 } 00:00:06 d #3274 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3275 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3276 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3277 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chores/chores.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3278 > e182749a69de369b41601d59b66d66fda8c320b8 00:00:06 v #3279 > '22cc2919cdbd8e95094bb594f901a066bcc97026' 00:00:06 v #3280 > 'd8b21b32a827ce110b72a91d73fc68c37366f984' 00:00:06 v #3281 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3282 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3283 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3284 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/tasks.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub } 00:00:06 d #3286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; result = 5569 } 00:00:06 d #3287 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RocknRose.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf } 00:00:06 d #3289 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; result = 4625 } 00:00:06 i #3290 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html } 00:00:06 d #3291 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; result = 11686 } 00:00:06 i #3292 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub } 00:00:06 d #3293 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; result = 5497 } 00:00:06 i #3294 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf } 00:00:06 d #3295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; result = 4980 } 00:00:06 i #3296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html } 00:00:06 d #3297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; result = 11644 } 00:00:06 i #3298 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md } 00:00:06 d #3299 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; result = 155 } 00:00:06 d #3300 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Blond3B.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3301 > 9f027fb632360364fdede8801655256872d810e4 00:00:06 v #3302 > '9ac5bde963a16c5a5b9fab686e95f8ed42d40254' 00:00:06 v #3303 > '543b669227c1dd7bd85791edff81e3ceabaca885' 00:00:06 v #3304 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3305 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub } 00:00:06 d #3306 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; result = 60937 } 00:00:06 i #3307 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf } 00:00:06 v #3308 > 6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269 00:00:06 d #3309 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; result = 78346 } 00:00:06 i #3310 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html } 00:00:06 d #3311 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; result = 318093 } 00:00:06 i #3312 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub } 00:00:06 d #3313 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.md.epub; result = 54082 } 00:00:06 i #3314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf } 00:00:06 d #3315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; result = 230231 } 00:00:06 i #3316 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html } 00:00:06 d #3317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.md.html; result = 218431 } 00:00:06 i #3318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md } 00:00:06 v #3319 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3320 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3321 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; result = 271008 } 00:00:06 d #3322 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3323 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3324 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3325 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3326 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub } 00:00:06 d #3327 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; result = 5381 } 00:00:06 i #3328 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf } 00:00:06 d #3329 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; result = 2385 } 00:00:06 i #3330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html } 00:00:06 d #3331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; result = 9904 } 00:00:06 i #3332 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub } 00:00:06 d #3333 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.md.epub; result = 5382 } 00:00:06 i #3334 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf } 00:00:06 d #3335 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; result = 2382 } 00:00:06 i #3336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html } 00:00:06 d #3337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.md.html; result = 9904 } 00:00:06 i #3338 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md } 00:00:06 d #3339 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; result = 1783 } 00:00:06 d #3340 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3341 > 22cc2919cdbd8e95094bb594f901a066bcc97026 00:00:06 v #3342 > d8b21b32a827ce110b72a91d73fc68c37366f984 00:00:06 v #3343 > '0b2a389931afb82d941ca55444960e145eb5c657' 00:00:06 v #3344 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3345 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3346 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub } 00:00:06 v #3347 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub } 00:00:06 d #3349 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Blond3B.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3350 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; result = 6545 } 00:00:06 i #3351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf } 00:00:06 d #3352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; result = 5564 } 00:00:06 i #3353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf } 00:00:06 d #3354 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; result = 4630 } 00:00:06 d #3355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; result = 7490 } 00:00:06 i #3356 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html } 00:00:06 i #3357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html } 00:00:06 d #3358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; result = 11674 } 00:00:06 i #3359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub } 00:00:06 d #3360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; result = 14784 } 00:00:06 i #3361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub } 00:00:06 d #3362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; result = 5493 } 00:00:06 i #3363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf } 00:00:06 d #3364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; result = 6301 } 00:00:06 i #3365 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf } 00:00:06 d #3366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; result = 4985 } 00:00:06 i #3367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html } 00:00:06 d #3368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; result = 15525 } 00:00:06 d #3369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; result = 11640 } 00:00:06 i #3370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html } 00:00:06 i #3371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md } 00:00:06 d #3372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; result = 143 } 00:00:06 d #3373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; result = 13715 } 00:00:06 i #3374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md } 00:00:06 d #3375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; result = 3399 } 00:00:06 d #3376 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RorrieGomez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3377 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/test.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3378 > 543b669227c1dd7bd85791edff81e3ceabaca885 00:00:06 v #3379 > 9ac5bde963a16c5a5b9fab686e95f8ed42d40254 00:00:06 v #3380 > '68627cc8449ef4c0341ed29575f29640d4aa156d' 00:00:06 v #3381 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3382 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub } 00:00:06 d #3383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; result = 5502 } 00:00:06 i #3384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf } 00:00:06 d #3385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; result = 4283 } 00:00:06 v #3386 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html } 00:00:06 v #3388 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; result = 10079 } 00:00:06 i #3390 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub } 00:00:06 d #3391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; result = 5441 } 00:00:06 i #3392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf } 00:00:06 i #3393 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub } 00:00:06 v #3394 > 'bb1dd6b3d5d3aa822489fb2c78a9004391741d72' 00:00:06 d #3395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; result = 5892 } 00:00:06 i #3396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html } 00:00:06 d #3397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; result = 5507 } 00:00:06 d #3398 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3399 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf } 00:00:06 d #3400 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; result = 10049 } 00:00:06 i #3401 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md } 00:00:06 d #3402 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; result = 4376 } 00:00:06 i #3403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html } 00:00:06 d #3404 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; result = 99 } 00:00:06 d #3405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; result = 10079 } 00:00:06 i #3406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub } 00:00:06 d #3407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; result = 5443 } 00:00:06 i #3408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf } 00:00:06 d #3409 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; result = 5902 } 00:00:06 i #3410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html } 00:00:06 d #3411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; result = 10053 } 00:00:06 i #3412 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md } 00:00:06 d #3413 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; result = 99 } 00:00:06 d #3415 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3416 > 0b2a389931afb82d941ca55444960e145eb5c657 00:00:06 v #3417 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3418 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3419 > '1e05ad239e45446563aad233d9f0cba964a7fa66' 00:00:06 v #3420 > 'e6d9de7c036f23bcb7bdde8d98060b09ed696b52' 00:00:06 v #3421 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3422 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub } 00:00:06 d #3423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; result = 5564 } 00:00:06 i #3424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf } 00:00:06 d #3425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; result = 4796 } 00:00:06 i #3426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html } 00:00:06 d #3427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; result = 11675 } 00:00:06 i #3428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub } 00:00:06 d #3429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; result = 5492 } 00:00:06 i #3430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf } 00:00:06 d #3431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; result = 5107 } 00:00:06 i #3432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html } 00:00:06 d #3433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; result = 11638 } 00:00:06 i #3434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md } 00:00:06 d #3435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; result = 144 } 00:00:06 v #3436 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3437 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/test.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3438 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3439 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Brithanybrown.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3440 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3441 > 68627cc8449ef4c0341ed29575f29640d4aa156d 00:00:06 v #3442 > '30411c646f14862f669ca43b0cc4df49622b801f' 00:00:06 v #3443 > 'd7255f3394d469cd0f10ddc5400329b9730f52c5' 00:00:06 v #3444 > bb1dd6b3d5d3aa822489fb2c78a9004391741d72 00:00:06 v #3445 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub } 00:00:06 d #3447 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; result = 5909 } 00:00:06 i #3448 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf } 00:00:06 v #3449 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; result = 5733 } 00:00:06 i #3451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html } 00:00:06 d #3452 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; result = 11060 } 00:00:06 i #3453 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub } 00:00:06 d #3454 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; result = 5712 } 00:00:06 i #3455 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf } 00:00:06 v #3456 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; result = 12232 } 00:00:06 i #3458 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html } 00:00:06 d #3459 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; result = 10681 } 00:00:06 i #3461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md } 00:00:06 d #3462 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3463 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; result = 984 } 00:00:06 d #3464 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3465 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub } 00:00:06 d #3467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; result = 5772 } 00:00:06 i #3468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf } 00:00:06 d #3469 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; result = 2201 } 00:00:06 i #3470 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html } 00:00:06 d #3471 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; result = 10641 } 00:00:06 i #3472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub } 00:00:06 d #3473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; result = 5633 } 00:00:06 i #3474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf } 00:00:06 d #3475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; result = 2205 } 00:00:06 i #3476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html } 00:00:06 d #3477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; result = 10367 } 00:00:06 i #3478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md } 00:00:06 d #3479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; result = 650 } 00:00:06 v #3480 > e6d9de7c036f23bcb7bdde8d98060b09ed696b52 00:00:06 d #3481 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/cliparts.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3482 > 'bfe889588e28b8b54bc764337bfaa7907cb8ff0d' 00:00:06 v #3483 > 1e05ad239e45446563aad233d9f0cba964a7fa66 00:00:06 v #3484 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub } 00:00:06 v #3486 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3487 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; result = 5936 } 00:00:06 i #3488 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf } 00:00:06 d #3489 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; result = 3053 } 00:00:06 i #3490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html } 00:00:06 d #3491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; result = 11432 } 00:00:06 d #3492 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3493 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub } 00:00:06 d #3494 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.md.epub; result = 5400 } 00:00:06 i #3495 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf } 00:00:06 d #3496 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; result = 856 } 00:00:06 i #3497 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html } 00:00:06 v #3498 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3499 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.md.html; result = 11432 } 00:00:06 i #3500 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md } 00:00:06 d #3501 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; result = 1 } 00:00:06 i #3502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub } 00:00:06 d #3503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; result = 5568 } 00:00:06 i #3504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf } 00:00:06 d #3505 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3506 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; result = 4624 } 00:00:06 i #3507 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html } 00:00:06 d #3508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; result = 11680 } 00:00:06 i #3509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub } 00:00:06 d #3510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; result = 5495 } 00:00:06 i #3511 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf } 00:00:06 d #3512 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; result = 5063 } 00:00:06 i #3513 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html } 00:00:06 d #3514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; result = 11642 } 00:00:06 i #3515 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md } 00:00:06 d #3516 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; result = 149 } 00:00:06 d #3517 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/hanauittang.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3518 > 30411c646f14862f669ca43b0cc4df49622b801f 00:00:06 v #3519 > d7255f3394d469cd0f10ddc5400329b9730f52c5 00:00:06 v #3520 > '4fcc14c389efe6ff802ca7b9c339f651219e2bcb' 00:00:06 v #3521 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3522 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub } 00:00:06 d #3523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; result = 5684 } 00:00:06 i #3524 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf } 00:00:06 d #3525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; result = 4460 } 00:00:06 i #3526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html } 00:00:06 d #3527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; result = 12646 } 00:00:06 i #3528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub } 00:00:06 d #3529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; result = 5561 } 00:00:06 i #3530 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf } 00:00:06 d #3531 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; result = 7737 } 00:00:06 i #3532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html } 00:00:06 d #3533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; result = 12153 } 00:00:06 i #3534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md } 00:00:06 d #3535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; result = 1700 } 00:00:06 v #3536 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3537 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3538 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/linux/linux.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3539 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub } 00:00:06 d #3541 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; result = 114192 } 00:00:06 i #3542 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf } 00:00:06 d #3543 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; result = 116341 } 00:00:06 i #3544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html } 00:00:06 v #3545 > '3641d1976fdcab1098922b3a808a6893d0dae39b' 00:00:06 d #3546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; result = 455079 } 00:00:06 i #3547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub } 00:00:06 d #3548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; result = 100223 } 00:00:06 i #3549 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf } 00:00:06 d #3550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; result = 356366 } 00:00:06 i #3551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html } 00:00:06 d #3552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; result = 317605 } 00:00:06 i #3553 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md } 00:00:06 d #3554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; result = 424276 } 00:00:06 d #3555 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3556 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3557 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3558 > bfe889588e28b8b54bc764337bfaa7907cb8ff0d 00:00:06 v #3559 > '099ae9eb8a1733fc1f5da893621fdbb57e5078e0' 00:00:06 v #3560 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub } 00:00:06 d #3562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; result = 5568 } 00:00:06 i #3563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf } 00:00:06 v #3564 > 'e07d15b06c6b6fa86ca180ceca8a26064faca8b2' 00:00:06 d #3565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; result = 4622 } 00:00:06 i #3566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html } 00:00:06 d #3567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; result = 11680 } 00:00:06 i #3568 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub } 00:00:06 d #3569 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; result = 5494 } 00:00:06 i #3570 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf } 00:00:06 d #3571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; result = 5065 } 00:00:06 i #3572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html } 00:00:06 d #3573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; result = 11644 } 00:00:06 i #3574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md } 00:00:06 d #3575 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; result = 149 } 00:00:06 d #3576 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Cherrycute666.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3577 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3578 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3579 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3580 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/hanauittang.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3581 > '9dd2ff3e83c994f7a66cf9f856ced92801c3c31f' 00:00:06 v #3582 > 4fcc14c389efe6ff802ca7b9c339f651219e2bcb 00:00:06 v #3583 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3584 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/linux/linux.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3585 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub } 00:00:06 v #3587 > '4ee1f7e9e8ad93249e8717a7c0ab146d70933975' 00:00:06 d #3588 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; result = 7118 } 00:00:06 i #3589 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf } 00:00:06 d #3590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; result = 2202 } 00:00:06 i #3591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html } 00:00:06 d #3592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; result = 15904 } 00:00:06 i #3593 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub } 00:00:06 v #3594 > 3641d1976fdcab1098922b3a808a6893d0dae39b 00:00:06 d #3595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; result = 6558 } 00:00:06 i #3596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf } 00:00:06 d #3597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; result = 2204 } 00:00:06 i #3598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html } 00:00:06 d #3599 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; result = 13572 } 00:00:06 i #3600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md } 00:00:06 d #3601 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; result = 5168 } 00:00:06 d #3602 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/philosophy/philosophy.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3603 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3604 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3605 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub } 00:00:06 d #3607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; result = 5602 } 00:00:06 i #3608 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf } 00:00:06 d #3609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; result = 4052 } 00:00:06 i #3610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html } 00:00:06 d #3611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; result = 10765 } 00:00:06 i #3612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub } 00:00:06 d #3613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; result = 5497 } 00:00:06 i #3614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf } 00:00:06 d #3615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; result = 6628 } 00:00:06 i #3616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html } 00:00:06 d #3617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; result = 10614 } 00:00:06 i #3618 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md } 00:00:06 d #3619 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; result = 531 } 00:00:06 d #3620 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/clojure/clojure.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3621 > 099ae9eb8a1733fc1f5da893621fdbb57e5078e0 00:00:06 v #3622 > '604f45424a71a705f768723ab6fed300b025f600' 00:00:06 v #3623 > e07d15b06c6b6fa86ca180ceca8a26064faca8b2 00:00:06 v #3624 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3625 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3626 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3627 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub } 00:00:06 d #3628 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; result = 10026 } 00:00:06 i #3629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf } 00:00:06 d #3630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; result = 8957 } 00:00:06 i #3631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html } 00:00:06 d #3632 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; result = 22716 } 00:00:06 i #3633 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub } 00:00:06 d #3634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; result = 9459 } 00:00:06 i #3635 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf } 00:00:06 d #3636 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; result = 20798 } 00:00:06 i #3637 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html } 00:00:06 d #3638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; result = 22691 } 00:00:06 i #3639 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md } 00:00:06 d #3640 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; result = 12694 } 00:00:06 d #3641 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3642 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub } 00:00:06 d #3644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; result = 185879 } 00:00:06 i #3645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf } 00:00:06 d #3646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; result = 231956 } 00:00:06 i #3647 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html } 00:00:06 v #3648 > 9dd2ff3e83c994f7a66cf9f856ced92801c3c31f 00:00:06 d #3649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; result = 1003874 } 00:00:06 i #3650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub } 00:00:06 d #3651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; result = 165955 } 00:00:06 i #3652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf } 00:00:06 v #3653 > 'b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533' 00:00:06 d #3654 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; result = 685702 } 00:00:06 i #3655 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html } 00:00:06 v #3656 > 4ee1f7e9e8ad93249e8717a7c0ab146d70933975 00:00:06 d #3657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; result = 686673 } 00:00:06 i #3658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md } 00:00:06 v #3659 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3660 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; result = 869743 } 00:00:06 i #3661 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub } 00:00:06 d #3662 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; result = 5755 } 00:00:06 i #3663 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf } 00:00:06 d #3664 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; result = 6107 } 00:00:06 i #3666 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html } 00:00:06 d #3667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; result = 14764 } 00:00:06 i #3668 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub } 00:00:06 d #3669 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.md.epub; result = 5619 } 00:00:06 i #3670 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf } 00:00:06 d #3671 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; result = 12711 } 00:00:06 i #3672 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html } 00:00:06 v #3673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.md.html; result = 14556 } 00:00:06 i #3675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md } 00:00:06 d #3676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; result = 577 } 00:00:06 d #3677 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3678 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3679 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3680 > 'caed1cfb27dd8ad27c8e5bc20c0479b30b30b655' 00:00:07 i #3681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub } 00:00:07 d #3682 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; result = 15614 } 00:00:07 i #3683 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf } 00:00:07 d #3684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; result = 14813 } 00:00:07 i #3685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html } 00:00:07 d #3686 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; result = 55715 } 00:00:07 i #3687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub } 00:00:07 d #3688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; result = 14106 } 00:00:07 i #3689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf } 00:00:07 d #3690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; result = 43003 } 00:00:07 i #3691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html } 00:00:07 d #3692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; result = 41442 } 00:00:07 i #3693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md } 00:00:07 d #3694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; result = 38222 } 00:00:07 d #3695 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3696 > 604f45424a71a705f768723ab6fed300b025f600 00:00:07 v #3697 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3698 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/clojure/clojure.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3699 > 'a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a' 00:00:07 v #3700 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3701 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub } 00:00:07 d #3702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; result = 5568 } 00:00:07 i #3703 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf } 00:00:07 d #3704 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; result = 4773 } 00:00:07 i #3705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html } 00:00:07 d #3706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; result = 11677 } 00:00:07 i #3707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub } 00:00:07 d #3708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; result = 5495 } 00:00:07 i #3709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf } 00:00:07 d #3710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; result = 4954 } 00:00:07 i #3711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html } 00:00:07 d #3712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; result = 11644 } 00:00:07 i #3713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md } 00:00:07 d #3714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; result = 146 } 00:00:07 d #3715 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/chloewildd.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3716 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3717 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3718 > '23c4084024f5966ec8b1bbeebb4e3660e8e9e678' 00:00:07 v #3719 > '7eb090fec8afaa68bc03fd2f8a154dccfc54ccea' 00:00:07 v #3720 > b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533 00:00:07 v #3721 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3722 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3723 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3724 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3725 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3726 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub } 00:00:07 d #3727 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; result = 5694 } 00:00:07 i #3728 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf } 00:00:07 d #3729 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; result = 4010 } 00:00:07 i #3730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html } 00:00:07 v #3731 > 'f511538655cfdcae9b9a4a30a112c5860d9d6c2c' 00:00:07 d #3732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; result = 10350 } 00:00:07 i #3733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub } 00:00:07 d #3734 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; result = 5560 } 00:00:07 i #3735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf } 00:00:07 d #3736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; result = 8020 } 00:00:07 i #3737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html } 00:00:07 d #3738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; result = 10165 } 00:00:07 i #3739 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md } 00:00:07 d #3740 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; result = 425 } 00:00:07 d #3741 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/physics/physics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3742 > caed1cfb27dd8ad27c8e5bc20c0479b30b30b655 00:00:07 v #3743 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3744 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3745 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3746 > '25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a' 00:00:07 v #3747 > a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a 00:00:07 i #3748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub } 00:00:07 d #3749 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; result = 6690 } 00:00:07 i #3750 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf } 00:00:07 d #3751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; result = 8671 } 00:00:07 i #3752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html } 00:00:07 d #3753 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; result = 14366 } 00:00:07 i #3754 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub } 00:00:07 d #3755 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; result = 6846 } 00:00:07 i #3756 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf } 00:00:07 d #3757 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; result = 27567 } 00:00:07 i #3758 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html } 00:00:07 d #3759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; result = 25746 } 00:00:07 i #3760 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md } 00:00:07 d #3761 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; result = 3603 } 00:00:07 v #3762 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3763 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/chloewildd.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3764 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/community.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3765 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3766 > 23c4084024f5966ec8b1bbeebb4e3660e8e9e678 00:00:07 i #3767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub } 00:00:07 v #3768 > 7eb090fec8afaa68bc03fd2f8a154dccfc54ccea 00:00:07 d #3769 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; result = 5536 } 00:00:07 i #3770 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf } 00:00:07 d #3771 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; result = 3958 } 00:00:07 i #3772 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html } 00:00:07 d #3773 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; result = 10125 } 00:00:07 i #3774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub } 00:00:07 d #3775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; result = 5458 } 00:00:07 i #3776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf } 00:00:07 d #3777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; result = 6122 } 00:00:07 i #3778 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html } 00:00:07 d #3779 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; result = 10079 } 00:00:07 i #3780 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md } 00:00:07 d #3781 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; result = 158 } 00:00:07 d #3782 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3783 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3784 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub } 00:00:07 v #3785 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3786 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub } 00:00:07 d #3787 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; result = 5519 } 00:00:07 d #3788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; result = 149082 } 00:00:07 i #3789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf } 00:00:07 i #3789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf } 00:00:07 d #3791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; result = 3756 } 00:00:07 d #3792 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; result = 196786 } 00:00:07 i #3793 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html } 00:00:07 i #3794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html } 00:00:07 d #3795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; result = 10098 } 00:00:07 i #3796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub } 00:00:07 d #3797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; result = 5445 } 00:00:07 i #3798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf } 00:00:07 d #3799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; result = 779668 } 00:00:07 i #3800 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub } 00:00:07 v #3801 > '7b6d0567ef2c3b3065aedba6666cb581431a0f5d' 00:00:07 d #3802 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; result = 5855 } 00:00:07 d #3803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.md.epub; result = 131994 } 00:00:07 i #3804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf } 00:00:07 i #3805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html } 00:00:07 d #3806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; result = 10064 } 00:00:07 d #3807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; result = 555188 } 00:00:07 i #3808 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md } 00:00:07 i #3809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html } 00:00:07 d #3810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; result = 130 } 00:00:07 d #3811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.md.html; result = 535078 } 00:00:07 i #3812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md } 00:00:07 d #3813 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #3814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; result = 670043 } 00:00:07 d #3815 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3816 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #3817 > f511538655cfdcae9b9a4a30a112c5860d9d6c2c 00:00:07 d #3818 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/physics/physics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3819 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3820 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub } 00:00:07 d #3821 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; result = 6184 } 00:00:07 i #3822 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf } 00:00:07 d #3823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; result = 4495 } 00:00:07 i #3824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html } 00:00:07 d #3825 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; result = 12199 } 00:00:07 i #3826 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub } 00:00:07 d #3827 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; result = 5906 } 00:00:07 i #3828 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf } 00:00:07 d #3829 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; result = 10138 } 00:00:07 i #3830 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html } 00:00:07 d #3831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; result = 11223 } 00:00:07 i #3832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md } 00:00:07 d #3833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; result = 2044 } 00:00:07 d #3834 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3835 > 25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a 00:00:07 v #3836 > '15350531c1b6540ade3842d1ffa6cbaf1c0b8763' 00:00:07 v #3837 > '67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01' 00:00:07 v #3838 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3839 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub } 00:00:07 v #3840 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3841 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; result = 5567 } 00:00:07 i #3842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf } 00:00:07 d #3843 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; result = 4626 } 00:00:07 i #3844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html } 00:00:07 d #3845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; result = 11676 } 00:00:07 i #3846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub } 00:00:07 d #3847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; result = 5488 } 00:00:07 i #3848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf } 00:00:07 d #3849 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/community.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3850 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; result = 4998 } 00:00:07 i #3851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html } 00:00:07 d #3852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; result = 11636 } 00:00:07 v #3853 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md } 00:00:07 d #3855 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; result = 146 } 00:00:07 d #3856 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3857 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Dakota_Blare.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3858 > 'b9770d8435b744c4b233a8b2b18412137e2d24ce' 00:00:07 v #3859 > 'f0caa36f833b2e05a7943dddc61fb7650928f4e5' 00:00:07 v #3860 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3861 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3862 > 7b6d0567ef2c3b3065aedba6666cb581431a0f5d 00:00:07 v #3863 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3864 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub } 00:00:07 d #3866 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3867 > 'e62f0064be6a954e4eef32d9f99cc611c1fa53ce' 00:00:07 d #3868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; result = 27593 } 00:00:07 i #3869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf } 00:00:07 d #3870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; result = 38926 } 00:00:07 i #3871 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html } 00:00:07 d #3872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; result = 147258 } 00:00:07 i #3873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub } 00:00:07 d #3874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.md.epub; result = 25466 } 00:00:07 i #3875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf } 00:00:07 d #3876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; result = 122551 } 00:00:07 i #3877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html } 00:00:07 d #3878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.md.html; result = 132638 } 00:00:07 i #3879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md } 00:00:07 d #3880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; result = 96075 } 00:00:07 d #3881 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tidal/tidal.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3882 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3883 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3884 > 15350531c1b6540ade3842d1ffa6cbaf1c0b8763 00:00:07 v #3885 > 67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01 00:00:07 v #3886 > '33241bf308571f30a46d2ef4af47882bd6d76c2c' 00:00:07 v #3887 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3888 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub } 00:00:07 v #3889 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3890 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub } 00:00:07 d #3892 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3893 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; result = 12867 } 00:00:07 d #3894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; result = 5433 } 00:00:07 i #3895 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf } 00:00:07 i #3896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf } 00:00:07 v #3897 > b9770d8435b744c4b233a8b2b18412137e2d24ce 00:00:07 d #3898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; result = 13134 } 00:00:07 d #3899 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; result = 3454 } 00:00:07 i #3900 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html } 00:00:07 i #3901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html } 00:00:07 d #3902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; result = 9950 } 00:00:07 d #3903 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; result = 44767 } 00:00:07 i #3904 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub } 00:00:07 i #3905 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub } 00:00:07 d #3906 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; result = 5407 } 00:00:07 d #3907 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub; new_path = c:/home/git/vault/dist/data/community/community.md.epub; result = 11864 } 00:00:07 i #3908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf } 00:00:07 i #3909 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf } 00:00:07 d #3910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; result = 4526 } 00:00:07 i #3911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html } 00:00:07 d #3912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.md.pdf; result = 36091 } 00:00:07 i #3913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html } 00:00:07 d #3914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.md.html; result = 9943 } 00:00:07 i #3915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md } 00:00:07 d #3916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; result = 39 } 00:00:07 d #3917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html; new_path = c:/home/git/vault/dist/data/community/community.md.html; result = 34745 } 00:00:07 i #3918 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md } 00:00:07 d #3919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md; new_path = c:/home/git/vault/dist/data/community/community.hangul.md; result = 28240 } 00:00:07 d #3920 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #3921 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/netiquette_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3922 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub } 00:00:07 v #3924 > f0caa36f833b2e05a7943dddc61fb7650928f4e5 00:00:07 d #3925 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; result = 37566 } 00:00:07 i #3926 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf } 00:00:07 d #3927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; result = 41493 } 00:00:07 i #3928 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html } 00:00:07 d #3929 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; result = 167307 } 00:00:07 i #3930 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub } 00:00:07 d #3931 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.md.epub; result = 33524 } 00:00:07 i #3932 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf } 00:00:07 d #3933 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; result = 121215 } 00:00:07 i #3934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html } 00:00:07 d #3935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.md.html; result = 115157 } 00:00:07 i #3936 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md } 00:00:07 d #3937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; result = 138648 } 00:00:07 v #3938 > 'aa2d0c55ac0ada3ffecd82f754d1a73ececcdede' 00:00:07 d #3939 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3940 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3941 > e62f0064be6a954e4eef32d9f99cc611c1fa53ce 00:00:07 i #3942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub } 00:00:07 d #3943 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; result = 5704 } 00:00:07 i #3944 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf } 00:00:07 d #3945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; result = 4040 } 00:00:07 i #3946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html } 00:00:07 d #3947 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; result = 10371 } 00:00:07 i #3948 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub } 00:00:07 d #3949 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; result = 5565 } 00:00:07 i #3950 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf } 00:00:07 d #3951 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; result = 8045 } 00:00:07 i #3952 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html } 00:00:07 v #3953 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; result = 10178 } 00:00:07 i #3955 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md } 00:00:07 d #3956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; result = 445 } 00:00:07 d #3957 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tidal/tidal.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3958 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3959 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub } 00:00:07 d #3961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; result = 5728 } 00:00:07 i #3962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf } 00:00:07 d #3963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; result = 4849 } 00:00:07 i #3964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html } 00:00:07 d #3965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; result = 10440 } 00:00:07 i #3966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub } 00:00:07 d #3967 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; result = 5596 } 00:00:07 i #3968 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf } 00:00:07 d #3969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; result = 8065 } 00:00:07 i #3970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html } 00:00:07 d #3971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; result = 10285 } 00:00:07 i #3972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md } 00:00:07 v #3973 > 33241bf308571f30a46d2ef4af47882bd6d76c2c 00:00:07 d #3974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; result = 452 } 00:00:07 d #3975 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3976 > '5c6998de94bbf4d6ccad1953040679ff190118cb' 00:00:07 v #3977 > '92c1cc9e4652398e85a563d1e6b80d0c32a875cf' 00:00:07 v #3978 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub } 00:00:07 d #3980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; result = 5570 } 00:00:07 i #3981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf } 00:00:07 d #3982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; result = 4677 } 00:00:07 i #3983 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html } 00:00:07 d #3984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; result = 11681 } 00:00:07 i #3985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub } 00:00:07 d #3986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; result = 5497 } 00:00:07 i #3987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf } 00:00:07 d #3988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; result = 5038 } 00:00:07 v #3989 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3990 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html } 00:00:07 d #3991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; result = 11643 } 00:00:07 i #3992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md } 00:00:07 d #3993 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; result = 150 } 00:00:07 d #3994 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3995 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/diney_.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3996 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3997 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3998 > '064a22fe29f93a179c0a78a90e69c2837a9bef3b' 00:00:07 v #3999 > aa2d0c55ac0ada3ffecd82f754d1a73ececcdede 00:00:07 v #4000 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4001 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4002 > '897270ba23b72d3d513ff0d09368a70b0104016e' 00:00:07 v #4003 > 'f47c94890517de570ba3f3c2a65cd85a7c7c5d5d' 00:00:07 v #4004 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4005 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub } 00:00:07 d #4006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; result = 5529 } 00:00:07 i #4007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf } 00:00:07 d #4008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; result = 3796 } 00:00:07 i #4009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html } 00:00:07 d #4010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; result = 10308 } 00:00:07 i #4011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub } 00:00:07 d #4012 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; result = 5460 } 00:00:07 i #4013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf } 00:00:07 d #4014 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; result = 6040 } 00:00:07 i #4015 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html } 00:00:07 d #4016 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; result = 10245 } 00:00:07 i #4017 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md } 00:00:07 d #4018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; result = 252 } 00:00:07 v #4019 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4020 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #4021 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4022 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4023 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4024 > '686cf1b026ac94c307ea6730e1b68c4579c8f568' 00:00:07 v #4025 > 5c6998de94bbf4d6ccad1953040679ff190118cb 00:00:07 v #4026 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4027 > 92c1cc9e4652398e85a563d1e6b80d0c32a875cf 00:00:07 v #4028 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #4029 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/diney_.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 i #4030 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub } 00:00:07 v #4031 > 064a22fe29f93a179c0a78a90e69c2837a9bef3b 00:00:07 d #4032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; result = 23770 } 00:00:07 i #4033 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf } 00:00:07 d #4034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; result = 22472 } 00:00:07 i #4035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html } 00:00:07 d #4036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; result = 85534 } 00:00:07 i #4037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub } 00:00:07 d #4038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; result = 21832 } 00:00:07 i #4039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf } 00:00:07 d #4040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; result = 56670 } 00:00:07 i #4041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html } 00:00:07 d #4042 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; result = 64583 } 00:00:07 i #4043 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md } 00:00:07 d #4044 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; result = 65402 } 00:00:07 v #4045 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #4046 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #4047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub } 00:00:07 v #4048 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #4049 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; result = 42389 } 00:00:07 i #4050 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf } 00:00:07 i #4051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub } 00:00:07 d #4052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; result = 63919 } 00:00:07 i #4053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html } 00:00:07 d #4054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; result = 5697 } 00:00:07 i #4055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf } 00:00:07 d #4056 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; result = 189367 } 00:00:07 i #4057 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub } 00:00:07 d #4058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; result = 3988 } 00:00:07 i #4059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html } 00:00:07 d #4060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; result = 10327 } 00:00:07 d #4060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; result = 39242 } 00:00:07 i #4062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub } 00:00:07 i #4063 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf } 00:00:07 d #4064 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; result = 5557 } 00:00:07 i #4065 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf } 00:00:07 d #4066 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; result = 170155 } 00:00:07 d #4067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; result = 7796 } 00:00:07 v #4068 > f47c94890517de570ba3f3c2a65cd85a7c7c5d5d 00:00:07 i #4069 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html } 00:00:07 i #4070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html } 00:00:07 d #4071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; result = 10142 } 00:00:07 i #4072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md } 00:00:07 d #4073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; result = 159326 } 00:00:07 i #4074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md } 00:00:07 d #4075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; result = 402 } 00:00:07 d #4076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; result = 142620 } 00:00:07 d #4077 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #4078 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4079 > 'f5ab0c0ec6a0da97eff29f25566ab657ad94239c' 00:00:07 v #4080 > 897270ba23b72d3d513ff0d09368a70b0104016e 00:00:07 v #4081 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub } 00:00:07 d #4083 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; result = 5504 } 00:00:07 i #4084 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf } 00:00:07 d #4085 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; result = 3752 } 00:00:07 i #4086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html } 00:00:07 d #4087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; result = 10083 } 00:00:07 i #4088 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub } 00:00:07 d #4089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; result = 5440 } 00:00:07 i #4090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf } 00:00:07 d #4091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; result = 5922 } 00:00:07 i #4092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html } 00:00:07 d #4093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; result = 10055 } 00:00:07 i #4094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md } 00:00:07 d #4095 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; result = 116 } 00:00:07 v #4096 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #4097 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #4098 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub } 00:00:07 v #4099 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4100 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; result = 6288 } 00:00:07 i #4101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf } 00:00:07 d #4102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; result = 6161 } 00:00:07 i #4103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html } 00:00:07 d #4104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; result = 15841 } 00:00:07 i #4105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub } 00:00:07 d #4106 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; result = 6009 } 00:00:07 i #4107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf } 00:00:07 d #4108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; result = 11044 } 00:00:07 i #4109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html } 00:00:07 d #4110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; result = 13952 } 00:00:07 i #4111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md } 00:00:07 d #4112 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #4113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; result = 4984 } 00:00:07 d #4114 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cryptography/cryptography.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4115 > 686cf1b026ac94c307ea6730e1b68c4579c8f568 00:00:07 v #4116 > '17a6d9d0c45d109ff619ec77bcf456f06ba31cc4' 00:00:07 v #4117 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4118 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #4119 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 i #4120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub } 00:00:07 d #4121 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; result = 5563 } 00:00:07 i #4122 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf } 00:00:07 d #4123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; result = 4672 } 00:00:07 i #4124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html } 00:00:07 d #4125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; result = 11672 } 00:00:07 i #4126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub } 00:00:07 d #4127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; result = 5490 } 00:00:07 i #4128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf } 00:00:07 d #4129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; result = 4880 } 00:00:07 i #4130 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html } 00:00:07 v #4131 > 'a1f263813735775e0636a8b7a19d85259cbbbc8f' 00:00:07 d #4132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; result = 11637 } 00:00:07 i #4133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md } 00:00:07 d #4134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; result = 141 } 00:00:07 d #4135 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/EffyTudor.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4136 > 'd239324db5340dd134db4e31f640bda07ff385b7' 00:00:07 v #4137 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4138 > '95f0e6ecaba1080da86604a202d4376c02c82aa3' 00:00:07 d #4139 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4140 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4141 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4142 > f5ab0c0ec6a0da97eff29f25566ab657ad94239c 00:00:07 v #4143 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4144 > 'cc93beedc8535df5abf8406510f5aec3aa40d343' 00:00:07 d #4145 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4146 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub } 00:00:07 d #4149 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cryptography/cryptography.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #4150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; result = 5630 } 00:00:07 i #4151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf } 00:00:07 d #4152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; result = 4192 } 00:00:07 i #4153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html } 00:00:07 d #4154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; result = 12587 } 00:00:07 i #4155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub } 00:00:07 d #4156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; result = 5528 } 00:00:07 i #4157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf } 00:00:07 d #4158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; result = 7427 } 00:00:07 i #4159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html } 00:00:07 d #4160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; result = 12122 } 00:00:07 i #4161 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md } 00:00:07 d #4162 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; result = 1641 } 00:00:07 d #4163 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4164 > 17a6d9d0c45d109ff619ec77bcf456f06ba31cc4 00:00:07 v #4165 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub } 00:00:07 v #4167 > '695e1bd2568fc3ec226704fc887261fa878c5df7' 00:00:07 v #4168 > a1f263813735775e0636a8b7a19d85259cbbbc8f 00:00:07 d #4169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; result = 7609 } 00:00:07 i #4170 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf } 00:00:07 d #4171 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; result = 7443 } 00:00:07 i #4172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html } 00:00:07 d #4173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; result = 22975 } 00:00:07 i #4174 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub } 00:00:07 d #4175 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; result = 7148 } 00:00:07 i #4176 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf } 00:00:07 v #4177 > d239324db5340dd134db4e31f640bda07ff385b7 00:00:07 d #4178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; result = 18611 } 00:00:07 i #4179 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html } 00:00:07 d #4180 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; result = 20050 } 00:00:07 i #4181 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md } 00:00:07 d #4182 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; result = 7807 } 00:00:07 v #4183 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4184 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4185 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4186 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4187 > 95f0e6ecaba1080da86604a202d4376c02c82aa3 00:00:08 i #4188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub } 00:00:08 d #4189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; result = 5533 } 00:00:08 i #4190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf } 00:00:08 v #4191 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4192 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; result = 3980 } 00:00:08 i #4193 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html } 00:00:08 d #4194 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; result = 10310 } 00:00:08 i #4195 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub } 00:00:08 i #4196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub } 00:00:08 d #4197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; result = 5459 } 00:00:08 d #4198 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; result = 5824 } 00:00:08 i #4199 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf } 00:00:08 i #4200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf } 00:00:08 d #4201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; result = 6044 } 00:00:08 i #4202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html } 00:00:08 d #4203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; result = 4929 } 00:00:08 i #4204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html } 00:00:08 d #4205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; result = 10241 } 00:00:08 i #4206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md } 00:00:08 d #4207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; result = 10927 } 00:00:08 d #4208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; result = 254 } 00:00:08 i #4209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub } 00:00:08 d #4210 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; result = 5650 } 00:00:08 i #4211 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf } 00:00:08 d #4212 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; result = 8117 } 00:00:08 i #4213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html } 00:00:08 d #4214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; result = 10592 } 00:00:08 i #4215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md } 00:00:08 d #4216 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4217 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; result = 871 } 00:00:08 d #4218 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/science/science.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4219 > cc93beedc8535df5abf8406510f5aec3aa40d343 00:00:08 v #4220 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub } 00:00:08 d #4222 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; result = 5447 } 00:00:08 i #4223 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf } 00:00:08 d #4224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; result = 3543 } 00:00:08 i #4225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html } 00:00:08 d #4226 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; result = 9960 } 00:00:08 i #4227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub } 00:00:08 d #4228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; result = 5413 } 00:00:08 i #4229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf } 00:00:08 d #4230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; result = 4629 } 00:00:08 i #4231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html } 00:00:08 d #4232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; result = 9953 } 00:00:08 i #4233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md } 00:00:08 d #4234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; result = 48 } 00:00:08 v #4235 > '433ed8d4b7b7738e64d0c29b97820213654a6125' 00:00:08 d #4236 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/relationships/relationships.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4237 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4238 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub } 00:00:08 d #4239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; result = 8692 } 00:00:08 i #4240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf } 00:00:08 d #4241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; result = 15021 } 00:00:08 i #4242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html } 00:00:08 d #4243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; result = 39050 } 00:00:08 i #4244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub } 00:00:08 d #4245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; result = 8599 } 00:00:08 i #4246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf } 00:00:08 d #4247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; result = 28903 } 00:00:08 i #4248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html } 00:00:08 d #4249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; result = 47170 } 00:00:08 i #4250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md } 00:00:08 v #4251 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; result = 15583 } 00:00:08 d #4253 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4254 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dance/dance.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4255 > 695e1bd2568fc3ec226704fc887261fa878c5df7 00:00:08 v #4256 > '385359231e187441d5e052bfa7c26b3ad5aa645f' 00:00:08 v #4257 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4258 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub } 00:00:08 d #4259 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; result = 5563 } 00:00:08 i #4260 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf } 00:00:08 d #4261 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; result = 4626 } 00:00:08 i #4262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html } 00:00:08 d #4263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; result = 11677 } 00:00:08 i #4264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub } 00:00:08 d #4265 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; result = 5493 } 00:00:08 i #4266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf } 00:00:08 v #4267 > '18f02f65ac00e3313a7248eff4d1f1ba41a1ee08' 00:00:08 d #4268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; result = 4965 } 00:00:08 i #4269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html } 00:00:08 d #4270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; result = 11640 } 00:00:08 i #4271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md } 00:00:08 d #4272 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; result = 146 } 00:00:08 v #4273 > '7a1a75afcb103cdf4c7663b610486c7c5f728845' 00:00:08 d #4274 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4275 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4276 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4277 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4278 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4279 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4280 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/science/science.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4281 > '830edfbf78b902b8089b82f8ab7edf77a3f45500' 00:00:08 v #4282 > '59510e8d151bf1ed16e2f80089c7df50221b5565' 00:00:08 v #4283 > 433ed8d4b7b7738e64d0c29b97820213654a6125 00:00:08 v #4284 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4285 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/relationships/relationships.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4286 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4287 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4288 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dance/dance.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub } 00:00:08 d #4290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; result = 5501 } 00:00:08 i #4291 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf } 00:00:08 d #4292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; result = 4136 } 00:00:08 i #4293 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html } 00:00:08 d #4294 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; result = 10078 } 00:00:08 i #4295 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub } 00:00:08 d #4296 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; result = 5441 } 00:00:08 i #4297 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf } 00:00:08 d #4298 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; result = 5837 } 00:00:08 i #4299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html } 00:00:08 d #4300 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; result = 10048 } 00:00:08 i #4301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md } 00:00:08 d #4302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; result = 98 } 00:00:08 d #4303 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4304 > 18f02f65ac00e3313a7248eff4d1f1ba41a1ee08 00:00:08 v #4305 > '19608cf3c57a331f782ac1644d62a24aa6647ed9' 00:00:08 v #4306 > 385359231e187441d5e052bfa7c26b3ad5aa645f 00:00:08 v #4307 > 7a1a75afcb103cdf4c7663b610486c7c5f728845 00:00:08 v #4308 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4309 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4310 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub } 00:00:08 v #4312 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4313 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; result = 6409 } 00:00:08 i #4314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf } 00:00:08 i #4315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub } 00:00:08 d #4316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; result = 5167 } 00:00:08 v #4317 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html } 00:00:08 d #4319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; result = 5988 } 00:00:08 i #4320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf } 00:00:08 d #4321 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; result = 12384 } 00:00:08 d #4322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; result = 4277 } 00:00:08 i #4323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub } 00:00:08 i #4324 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub } 00:00:08 i #4325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html } 00:00:08 d #4326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.md.epub; result = 6116 } 00:00:08 i #4327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf } 00:00:08 d #4328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; result = 5748 } 00:00:08 d #4329 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; result = 11413 } 00:00:08 i #4330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf } 00:00:08 i #4331 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub } 00:00:08 d #4332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; result = 14650 } 00:00:08 d #4333 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; result = 5585 } 00:00:08 d #4334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub; new_path = c:/home/git/vault/dist/data/science/science.md.epub; result = 5763 } 00:00:08 i #4335 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html } 00:00:08 i #4336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html } 00:00:08 i #4337 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf } 00:00:08 d #4338 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.md.html; result = 11538 } 00:00:08 d #4340 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.md.pdf; result = 9459 } 00:00:08 i #4341 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md } 00:00:08 i #4341 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html } 00:00:08 d #4339 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; result = 10468 } 00:00:08 i #4343 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub } 00:00:08 d #4344 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html; new_path = c:/home/git/vault/dist/data/science/science.md.html; result = 10788 } 00:00:08 i #4345 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md } 00:00:08 d #4346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; result = 5606 } 00:00:08 i #4347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf } 00:00:08 d #4348 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; result = 2298 } 00:00:08 d #4349 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md; new_path = c:/home/git/vault/dist/data/science/science.hangul.md; result = 1351 } 00:00:08 d #4350 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; result = 10977 } 00:00:08 i #4351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html } 00:00:08 v #4352 > 830edfbf78b902b8089b82f8ab7edf77a3f45500 00:00:08 d #4353 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; result = 10286 } 00:00:08 i #4354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md } 00:00:08 d #4355 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/README.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4356 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/security/security.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4357 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; result = 476 } 00:00:08 d #4358 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4359 > 59510e8d151bf1ed16e2f80089c7df50221b5565 00:00:08 v #4360 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4361 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4362 > 'daf8c13f5f3fef473a3e956b4af9cadf20318223' 00:00:08 i #4363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub } 00:00:08 i #4364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub } 00:00:08 d #4365 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; result = 15451 } 00:00:08 i #4366 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf } 00:00:08 d #4367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; result = 15237 } 00:00:08 i #4368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html } 00:00:08 d #4369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; result = 57491 } 00:00:08 i #4370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub } 00:00:08 d #4371 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; result = 55585 } 00:00:08 i #4372 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf } 00:00:08 d #4373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.md.epub; result = 14054 } 00:00:08 i #4374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf } 00:00:08 d #4375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; result = 72415 } 00:00:08 i #4376 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html } 00:00:08 d #4377 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; result = 43868 } 00:00:08 i #4378 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html } 00:00:08 d #4379 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.md.html; result = 43482 } 00:00:08 i #4380 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md } 00:00:08 d #4381 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; result = 293965 } 00:00:08 i #4382 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub } 00:00:08 d #4383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; result = 40035 } 00:00:08 d #4384 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; result = 49354 } 00:00:08 i #4385 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf } 00:00:08 d #4386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; result = 202653 } 00:00:08 i #4387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html } 00:00:08 d #4388 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; result = 201038 } 00:00:08 i #4390 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md } 00:00:08 d #4391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; result = 252121 } 00:00:08 d #4392 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/hinduism.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4393 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4394 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4395 > 19608cf3c57a331f782ac1644d62a24aa6647ed9 00:00:08 v #4396 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4397 > '3aff6844c12e37a6a3873c14c6508303b3172a4e' 00:00:08 v #4397 > '41bfc888bf58bff06904fa5ae4c5678f3363965d' 00:00:08 i #4399 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub } 00:00:08 d #4400 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; result = 5564 } 00:00:08 i #4401 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf } 00:00:08 d #4402 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; result = 4674 } 00:00:08 i #4403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html } 00:00:08 d #4404 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; result = 11681 } 00:00:08 i #4405 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub } 00:00:08 d #4406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; result = 5495 } 00:00:08 i #4407 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf } 00:00:08 d #4408 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; result = 4994 } 00:00:08 i #4409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html } 00:00:08 v #4410 > 'd9dce8b7b3620797caab1846473795f01524ca8d' 00:00:08 d #4411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; result = 11642 } 00:00:08 i #4412 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md } 00:00:08 v #4413 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; result = 150 } 00:00:08 v #4415 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4416 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/security/security.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4417 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/README.md"]; options = { command = git hash-object "c:/home/git/vault/dist/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4418 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4420 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4421 > 'f62a266ecd504e3ac125c4bce1699e040ea49c9f' 00:00:08 v #4422 > daf8c13f5f3fef473a3e956b4af9cadf20318223 00:00:08 v #4423 > '97aa9fdc238588c6e274a80e391a78474d9ab897' 00:00:08 v #4424 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4425 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4426 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4427 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 i #4428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub } 00:00:08 d #4429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; result = 5993 } 00:00:08 i #4430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf } 00:00:08 d #4431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; result = 6239 } 00:00:08 i #4432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html } 00:00:08 d #4433 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/hinduism.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4434 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; result = 12304 } 00:00:08 i #4435 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub } 00:00:08 d #4436 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; result = 5913 } 00:00:08 i #4437 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf } 00:00:08 d #4438 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; result = 10862 } 00:00:08 i #4439 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html } 00:00:08 d #4440 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; result = 13133 } 00:00:08 i #4441 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md } 00:00:08 d #4442 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; result = 1439 } 00:00:08 d #4443 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/streaming/streaming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4444 > 3aff6844c12e37a6a3873c14c6508303b3172a4e 00:00:08 v #4445 > 41bfc888bf58bff06904fa5ae4c5678f3363965d 00:00:08 v #4446 > 'd3de83b9d0a0577cf26f194c7adad8192d14da8b' 00:00:08 v #4447 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4448 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 i #4449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub } 00:00:08 v #4450 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; result = 7156 } 00:00:08 i #4452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf } 00:00:08 d #4453 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4454 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; result = 7094 } 00:00:08 i #4454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub } 00:00:08 i #4456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html } 00:00:08 d #4457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub; new_path = c:/home/git/vault/dist/README.hangul.md.epub; result = 6994 } 00:00:08 v #4458 > d9dce8b7b3620797caab1846473795f01524ca8d 00:00:08 i #4459 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf } 00:00:08 d #4460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; result = 19814 } 00:00:08 i #4461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub } 00:00:08 d #4462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf; new_path = c:/home/git/vault/dist/README.hangul.md.pdf; result = 8628 } 00:00:08 i #4463 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html } 00:00:08 d #4464 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub; new_path = c:/home/git/vault/dist/data/security/security.md.epub; result = 6751 } 00:00:08 i #4465 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf } 00:00:08 d #4466 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html; new_path = c:/home/git/vault/dist/README.hangul.md.html; result = 16769 } 00:00:08 i #4467 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub } 00:00:08 d #4468 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.md.pdf; result = 17345 } 00:00:08 i #4469 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html } 00:00:08 d #4470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub; new_path = c:/home/git/vault/dist/README.md.epub; result = 6759 } 00:00:08 i #4471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf } 00:00:08 d #4472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html; new_path = c:/home/git/vault/dist/data/security/security.md.html; result = 17735 } 00:00:08 i #4473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md } 00:00:08 d #4474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf; new_path = c:/home/git/vault/dist/README.md.pdf; result = 13802 } 00:00:08 i #4475 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html } 00:00:08 d #4476 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md; new_path = c:/home/git/vault/dist/data/security/security.hangul.md; result = 5456 } 00:00:08 d #4477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html; new_path = c:/home/git/vault/dist/README.md.html; result = 16583 } 00:00:08 i #4478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md } 00:00:08 d #4479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md; new_path = c:/home/git/vault/dist/README.hangul.md; result = 3850 } 00:00:08 d #4480 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4481 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4482 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4483 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub } 00:00:08 d #4484 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; result = 29284 } 00:00:08 i #4485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf } 00:00:08 d #4486 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; result = 40902 } 00:00:08 i #4487 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html } 00:00:08 d #4488 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; result = 140043 } 00:00:08 v #4489 > f62a266ecd504e3ac125c4bce1699e040ea49c9f 00:00:08 i #4490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub } 00:00:08 d #4491 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.md.epub; result = 26365 } 00:00:08 i #4492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf } 00:00:08 d #4493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; result = 113039 } 00:00:08 i #4494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html } 00:00:08 d #4495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.md.html; result = 100022 } 00:00:08 i #4496 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md } 00:00:08 d #4497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; result = 114615 } 00:00:08 d #4498 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4499 > 97aa9fdc238588c6e274a80e391a78474d9ab897 00:00:08 v #4500 > '902c3656de437e37a00c83f6be1e981e8a6638bc' 00:00:08 v #4501 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub } 00:00:08 d #4503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; result = 5362 } 00:00:08 i #4504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf } 00:00:08 v #4505 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4506 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4507 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; result = 2203 } 00:00:08 i #4508 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html } 00:00:08 i #4509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub } 00:00:08 d #4510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; result = 9878 } 00:00:08 i #4511 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub } 00:00:08 d #4512 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/streaming/streaming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4513 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; result = 19246 } 00:00:08 i #4514 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf } 00:00:08 d #4515 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; result = 5363 } 00:00:08 i #4516 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf } 00:00:08 d #4517 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; result = 2204 } 00:00:08 d #4518 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; result = 20885 } 00:00:08 i #4519 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html } 00:00:08 i #4519 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html } 00:00:08 d #4521 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; result = 9878 } 00:00:08 i #4522 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md } 00:00:08 d #4523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; result = 81476 } 00:00:08 d #4524 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; result = 15 } 00:00:08 i #4525 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub } 00:00:08 d #4526 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; result = 17383 } 00:00:08 i #4527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf } 00:00:08 d #4528 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; result = 59715 } 00:00:08 i #4529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html } 00:00:08 d #4530 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4531 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; result = 58848 } 00:00:08 i #4532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md } 00:00:08 d #4533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; result = 61430 } 00:00:08 d #4534 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4535 > d3de83b9d0a0577cf26f194c7adad8192d14da8b 00:00:08 v #4536 > '58f17b0b255d89f87a9d7d7934f2a2b661f170d7' 00:00:08 v #4536 > 'b79898a204e337d6041af09f1180e9bb942a748f' 00:00:08 v #4538 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4539 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4540 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4541 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4542 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4543 > 'baec1a692d0f1fd4592a8a7e32f592a963acdd9f' 00:00:08 i #4544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub } 00:00:08 d #4545 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; result = 8554 } 00:00:08 i #4546 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf } 00:00:08 d #4547 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; result = 11793 } 00:00:08 i #4548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html } 00:00:08 d #4549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; result = 27046 } 00:00:08 i #4550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub } 00:00:08 d #4551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.md.epub; result = 8072 } 00:00:08 i #4552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf } 00:00:08 d #4553 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; result = 26462 } 00:00:08 i #4554 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html } 00:00:08 d #4555 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.md.html; result = 23119 } 00:00:08 i #4556 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md } 00:00:08 d #4557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; result = 10495 } 00:00:08 d #4558 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4559 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4560 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4561 > 902c3656de437e37a00c83f6be1e981e8a6638bc 00:00:08 v #4562 > '712d483c2c968e06911669449f9762c05719c90d' 00:00:08 v #4563 > '8b8616feca251f9df6d044c31d15e1070ce9ef1f' 00:00:08 v #4564 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4565 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 i #4566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub } 00:00:08 d #4567 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; result = 5384 } 00:00:08 i #4569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf } 00:00:08 d #4570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; result = 2393 } 00:00:08 i #4571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html } 00:00:08 d #4572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; result = 9930 } 00:00:08 i #4573 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub } 00:00:08 d #4574 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; result = 5384 } 00:00:08 i #4575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf } 00:00:08 d #4576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; result = 2394 } 00:00:08 i #4577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html } 00:00:08 d #4578 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; result = 9930 } 00:00:08 i #4579 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md } 00:00:08 d #4580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; result = 22 } 00:00:08 d #4581 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4582 > b79898a204e337d6041af09f1180e9bb942a748f 00:00:08 v #4583 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4584 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4585 > 58f17b0b255d89f87a9d7d7934f2a2b661f170d7 00:00:08 v #4586 > 'f3b56b85c461b6c7b4621c4867b4a3d000577ca1' 00:00:08 v #4587 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4588 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub } 00:00:08 d #4590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; result = 5533 } 00:00:08 i #4591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf } 00:00:08 i #4592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub } 00:00:08 v #4593 > baec1a692d0f1fd4592a8a7e32f592a963acdd9f 00:00:08 d #4594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; result = 3796 } 00:00:08 i #4595 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html } 00:00:08 d #4596 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; result = 6296 } 00:00:08 i #4597 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf } 00:00:08 d #4598 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; result = 10300 } 00:00:08 i #4599 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub } 00:00:08 d #4600 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; result = 2205 } 00:00:08 i #4601 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html } 00:00:08 d #4602 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; result = 5460 } 00:00:08 i #4603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf } 00:00:08 d #4604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; result = 14526 } 00:00:08 i #4605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub } 00:00:08 d #4606 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; result = 6123 } 00:00:08 i #4607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html } 00:00:08 d #4608 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; result = 6044 } 00:00:08 i #4609 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf } 00:00:08 d #4610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; result = 10237 } 00:00:08 i #4611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md } 00:00:08 d #4612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; result = 2202 } 00:00:08 i #4613 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html } 00:00:08 d #4614 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; result = 243 } 00:00:08 d #4615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; result = 12932 } 00:00:08 i #4616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md } 00:00:08 d #4617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; result = 4067 } 00:00:08 d #4618 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/north korea.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4619 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4620 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4621 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4622 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4623 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub } 00:00:08 v #4624 > 712d483c2c968e06911669449f9762c05719c90d 00:00:08 d #4625 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; result = 5769 } 00:00:08 i #4626 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf } 00:00:08 d #4627 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; result = 3974 } 00:00:08 i #4628 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html } 00:00:08 d #4629 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; result = 10645 } 00:00:08 i #4630 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub } 00:00:08 d #4631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; result = 5606 } 00:00:08 i #4632 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf } 00:00:08 d #4633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; result = 8600 } 00:00:08 i #4634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html } 00:00:08 d #4635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; result = 10320 } 00:00:08 i #4636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md } 00:00:08 d #4637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; result = 674 } 00:00:08 v #4638 > 'b92c23361ea8f27306695fd0a374f33164c2d7b9' 00:00:08 d #4639 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4640 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4641 > 8b8616feca251f9df6d044c31d15e1070ce9ef1f 00:00:08 i #4642 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub } 00:00:08 d #4643 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; result = 10180 } 00:00:08 i #4644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html } 00:00:08 d #4645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; result = 27037 } 00:00:08 i #4646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub } 00:00:08 d #4647 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; result = 9597 } 00:00:08 i #4648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html } 00:00:08 d #4649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; result = 22977 } 00:00:08 i #4650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md } 00:00:08 d #4651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; result = 13840 } 00:00:08 v #4652 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4653 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4654 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4655 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub } 00:00:08 d #4656 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; result = 18654 } 00:00:08 i #4657 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf } 00:00:08 d #4658 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; result = 18451 } 00:00:08 d #4659 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html } 00:00:08 d #4661 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; result = 64518 } 00:00:08 i #4662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub } 00:00:08 d #4663 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; result = 16597 } 00:00:08 i #4664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf } 00:00:08 d #4665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; result = 51633 } 00:00:08 i #4666 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html } 00:00:08 d #4667 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; result = 47826 } 00:00:08 i #4668 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md } 00:00:08 d #4669 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; result = 45510 } 00:00:08 v #4670 ! CROWBOOK 0.17.0 00:00:08 d #4671 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4672 ! 22:18:54 [DEBUG] (1) crowbook::book: Ignoring YAML block: 00:00:08 v #4673 ! 00:00:08 v #4674 ! 22:18:54 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:08 v #4675 ! 22:18:54 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:08 v #4676 > 'e3ef54d891d63ebc833646a1fd1659d77b054964' 00:00:08 v #4677 > f3b56b85c461b6c7b4621c4867b4a3d000577ca1 00:00:08 v #4678 > '25e72ff235ebd8e4660d7ff3fc112cecd828b9ac' 00:00:08 v #4679 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4680 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4681 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/north korea.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4682 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub } 00:00:08 v #4683 > '51956f3580c89e1921acf278708d688e116e3f1b' 00:00:08 d #4684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; result = 9406 } 00:00:08 i #4685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf } 00:00:08 d #4686 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; result = 2204 } 00:00:08 i #4687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html } 00:00:08 d #4688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; result = 77796 } 00:00:08 i #4689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub } 00:00:08 d #4690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; result = 8596 } 00:00:08 i #4691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf } 00:00:08 v #4692 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4693 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; result = 2202 } 00:00:08 i #4694 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html } 00:00:08 d #4695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; result = 56185 } 00:00:08 i #4696 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md } 00:00:08 d #4697 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4698 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; result = 59559 } 00:00:08 d #4699 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4700 > b92c23361ea8f27306695fd0a374f33164c2d7b9 00:00:08 v #4701 > 'a01a7819daf101c87c2cefedb8ff676668204110' 00:00:08 v #4702 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4703 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4704 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub } 00:00:09 d #4706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; result = 9358 } 00:00:09 i #4707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf } 00:00:09 d #4708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; result = 8973 } 00:00:09 i #4709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html } 00:00:09 d #4710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; result = 28941 } 00:00:09 i #4711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub } 00:00:09 v #4712 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; result = 8601 } 00:00:09 i #4714 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf } 00:00:09 d #4715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; result = 24161 } 00:00:09 i #4716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html } 00:00:09 d #4717 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4718 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; result = 23831 } 00:00:09 i #4719 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md } 00:00:09 d #4720 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; result = 13792 } 00:00:09 d #4721 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4722 > e3ef54d891d63ebc833646a1fd1659d77b054964 00:00:09 v #4723 > 'c325341c0da447957840c68bfae7175d63d047d8' 00:00:09 v #4724 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub } 00:00:09 d #4726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; result = 6121 } 00:00:09 i #4727 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf } 00:00:09 v #4728 > 25e72ff235ebd8e4660d7ff3fc112cecd828b9ac 00:00:09 d #4729 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; result = 3913 } 00:00:09 i #4730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html } 00:00:09 d #4731 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; result = 13391 } 00:00:09 v #4732 > 51956f3580c89e1921acf278708d688e116e3f1b 00:00:09 i #4733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub } 00:00:09 d #4734 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; result = 5893 } 00:00:09 i #4735 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf } 00:00:09 d #4736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; result = 4740 } 00:00:09 i #4737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html } 00:00:09 d #4738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; result = 12168 } 00:00:09 i #4739 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md } 00:00:09 d #4740 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; result = 2978 } 00:00:09 d #4741 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4742 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4743 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4744 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub } 00:00:09 d #4746 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; result = 5514 } 00:00:09 i #4747 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf } 00:00:09 d #4748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; result = 4530 } 00:00:09 i #4749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html } 00:00:09 d #4750 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; result = 10086 } 00:00:09 i #4751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub } 00:00:09 d #4752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; result = 5449 } 00:00:09 i #4753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf } 00:00:09 d #4754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; result = 6271 } 00:00:09 i #4755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html } 00:00:09 d #4756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; result = 10057 } 00:00:09 i #4757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md } 00:00:09 d #4758 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; result = 106 } 00:00:09 d #4759 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4760 > a01a7819daf101c87c2cefedb8ff676668204110 00:00:09 v #4761 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4762 > '2d97fefeab8e7ffa5f55735db347b2e66256a5ab' 00:00:09 i #4763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub } 00:00:09 d #4764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; result = 5811 } 00:00:09 i #4765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf } 00:00:09 d #4766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; result = 5119 } 00:00:09 i #4767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html } 00:00:09 d #4768 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; result = 10897 } 00:00:09 i #4769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub } 00:00:09 d #4770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; result = 5651 } 00:00:09 i #4771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf } 00:00:09 d #4772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; result = 8529 } 00:00:09 i #4773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html } 00:00:09 d #4774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; result = 10593 } 00:00:09 i #4775 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md } 00:00:09 d #4776 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; result = 820 } 00:00:09 d #4777 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spiral/spiral.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4778 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4779 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub } 00:00:09 d #4780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; result = 7175 } 00:00:09 i #4781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf } 00:00:09 d #4782 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; result = 7279 } 00:00:09 i #4783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html } 00:00:09 d #4784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; result = 18439 } 00:00:09 i #4785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub } 00:00:09 d #4786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; result = 6662 } 00:00:09 i #4787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf } 00:00:09 v #4788 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; result = 17083 } 00:00:09 i #4790 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html } 00:00:09 d #4791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; result = 15781 } 00:00:09 i #4792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md } 00:00:09 d #4793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; result = 6947 } 00:00:09 d #4794 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4795 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/maya.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4796 > '6276e35c0a0b5b4a95f352dfca27a1785e05caa6' 00:00:09 v #4797 > c325341c0da447957840c68bfae7175d63d047d8 00:00:09 v #4798 > '8d36121d0438fe72874a830235019a6439569844' 00:00:09 v #4799 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 v #4800 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 d #4801 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 i #4802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub } 00:00:09 v #4803 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4804 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; result = 373683 } 00:00:09 i #4805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf } 00:00:09 d #4806 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; result = 558482 } 00:00:09 i #4808 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html } 00:00:09 d #4809 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; result = 2036466 } 00:00:09 i #4810 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub } 00:00:09 d #4811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.md.epub; result = 331353 } 00:00:09 i #4812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf } 00:00:09 v #4813 > '9221f70d039b313ba746570ae387c6327e437490' 00:00:09 d #4814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; result = 1423058 } 00:00:09 i #4815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html } 00:00:09 v #4816 > '25f903ae29f0ef985ad733040e0ccd6034069834' 00:00:09 d #4817 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.md.html; result = 1385960 } 00:00:09 i #4818 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md } 00:00:09 d #4819 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; result = 1753438 } 00:00:09 d #4820 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4821 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4822 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/maya.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4823 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 v #4824 > 2d97fefeab8e7ffa5f55735db347b2e66256a5ab 00:00:09 d #4825 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spiral/spiral.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4826 > 6276e35c0a0b5b4a95f352dfca27a1785e05caa6 00:00:09 v #4827 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4828 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub } 00:00:09 d #4829 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; result = 5607 } 00:00:09 i #4830 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf } 00:00:09 d #4831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; result = 2203 } 00:00:09 i #4832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html } 00:00:09 d #4833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; result = 10198 } 00:00:09 i #4834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub } 00:00:09 d #4835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; result = 5494 } 00:00:09 i #4836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf } 00:00:09 d #4837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; result = 2205 } 00:00:09 i #4838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html } 00:00:09 d #4839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; result = 10083 } 00:00:09 i #4840 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md } 00:00:09 d #4841 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; result = 259 } 00:00:09 d #4842 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/devilopment_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4844 > 8d36121d0438fe72874a830235019a6439569844 00:00:09 v #4845 > 'ee4e487f06a56378569d0291de3224bd0b350da5' 00:00:09 i #4846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub } 00:00:09 d #4847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; result = 5876 } 00:00:09 i #4848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf } 00:00:09 d #4849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; result = 4975 } 00:00:09 i #4850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html } 00:00:09 d #4851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; result = 11687 } 00:00:09 i #4852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub } 00:00:09 v #4853 > 25f903ae29f0ef985ad733040e0ccd6034069834 00:00:09 d #4854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; result = 5690 } 00:00:09 i #4855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf } 00:00:09 d #4856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; result = 8238 } 00:00:09 i #4857 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html } 00:00:09 v #4858 > 9221f70d039b313ba746570ae387c6327e437490 00:00:09 d #4859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; result = 11300 } 00:00:09 i #4860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md } 00:00:09 d #4861 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; result = 1231 } 00:00:09 v #4862 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4863 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4864 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub } 00:00:09 i #4865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub } 00:00:09 d #4866 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; result = 15629 } 00:00:09 d #4867 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; result = 5507 } 00:00:09 i #4868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf } 00:00:09 i #4869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf } 00:00:09 d #4870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; result = 3730 } 00:00:09 d #4871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; result = 18707 } 00:00:09 i #4872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html } 00:00:09 i #4872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html } 00:00:09 d #4874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; result = 10086 } 00:00:09 i #4875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub } 00:00:09 d #4876 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4877 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; result = 65637 } 00:00:09 i #4878 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub } 00:00:09 d #4879 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; result = 5441 } 00:00:09 i #4880 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf } 00:00:09 d #4881 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.md.epub; result = 14283 } 00:00:09 i #4882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf } 00:00:09 d #4883 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; result = 5949 } 00:00:09 i #4884 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html } 00:00:09 d #4885 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; result = 49499 } 00:00:09 i #4886 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html } 00:00:09 d #4887 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; result = 10056 } 00:00:09 i #4888 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md } 00:00:09 d #4889 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.md.html; result = 48325 } 00:00:09 d #4890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; result = 119 } 00:00:09 i #4891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md } 00:00:09 v #4892 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4893 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; result = 46362 } 00:00:09 d #4894 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4895 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 d #4896 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4897 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4898 ! CROWBOOK 0.17.0 00:00:09 i #4899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub } 00:00:09 d #4900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; result = 5536 } 00:00:09 i #4901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf } 00:00:09 v #4902 ! 22:18:55 [DEBUG] (1) crowbook::book: Ignoring YAML block: 00:00:09 v #4903 ! 00:00:09 v #4904 ! 22:18:55 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:09 d #4905 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; result = 3815 } 00:00:09 i #4906 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html } 00:00:09 v #4907 ! 22:18:55 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:09 d #4908 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; result = 10126 } 00:00:09 i #4909 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub } 00:00:09 d #4910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; result = 5459 } 00:00:09 i #4911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf } 00:00:09 d #4912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; result = 6191 } 00:00:09 i #4913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html } 00:00:09 d #4914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; result = 10082 } 00:00:09 i #4915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md } 00:00:09 d #4916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; result = 159 } 00:00:09 d #4917 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.epub.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4918 > '2cd8a3611d7dca4b0dcd9d90df384a74128467d6' 00:00:09 v #4919 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4920 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4921 > 'b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35' 00:00:09 v #4922 > ee4e487f06a56378569d0291de3224bd0b350da5 00:00:09 v #4923 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 v #4924 > '327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a' 00:00:09 d #4925 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4926 > 'ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24' 00:00:09 v #4927 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4928 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub } 00:00:09 v #4929 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; result = 5624 } 00:00:09 i #4931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf } 00:00:09 d #4932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; result = 4028 } 00:00:09 i #4933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html } 00:00:09 d #4934 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; result = 10220 } 00:00:09 i #4936 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub } 00:00:09 d #4937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; result = 5507 } 00:00:09 i #4938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf } 00:00:09 d #4939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; result = 7332 } 00:00:09 i #4940 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html } 00:00:09 d #4941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; result = 10075 } 00:00:09 i #4942 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md } 00:00:09 d #4943 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; result = 296 } 00:00:09 v #4944 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4945 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.epub.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4946 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "epub", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub", "--set", "epub.version", "3", "html.css.add", "' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } '"]; options = { command = crowbook --verbose --to epub --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub" --set epub.version 3 html.css.add \"' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4947 > 2cd8a3611d7dca4b0dcd9d90df384a74128467d6 00:00:09 v #4948 ! CROWBOOK 0.17.0 00:00:09 v #4949 ! 22:18:55 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:09 v #4950 ! 22:18:55 [DEBUG] (1) crowbook::book: Attempting to generate epub... 00:00:09 v #4951 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4952 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub } 00:00:09 d #4953 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; result = 85747 } 00:00:09 i #4954 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf } 00:00:09 d #4955 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; result = 85914 } 00:00:09 i #4956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html } 00:00:09 d #4957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; result = 346771 } 00:00:09 i #4958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub } 00:00:09 d #4959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; result = 74774 } 00:00:09 i #4960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf } 00:00:09 d #4961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; result = 263658 } 00:00:09 i #4962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html } 00:00:09 d #4963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; result = 235095 } 00:00:09 i #4964 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md } 00:00:09 v #4965 > b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35 00:00:09 d #4966 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; result = 323167 } 00:00:09 d #4967 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4968 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 00:00:09 v #4969 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 00:00:09 v #4970 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 00:00:09 v #4971 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 00:00:09 v #4972 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 00:00:09 v #4973 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 00:00:09 v #4974 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 00:00:09 v #4975 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 00:00:09 v #4976 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 00:00:09 v #4977 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 00:00:09 v #4978 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 00:00:09 v #4979 ! 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 00:00:09 v #4980 > ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24 00:00:09 v #4981 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4982 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub } 00:00:09 v #4983 ! 22:18:55 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css" 00:00:09 v #4984 ! 22:18:55 [DEBUG] (1) epub_builder::epub: render_opf... 00:00:09 v #4985 ! 22:18:55 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml" 00:00:09 v #4986 ! 22:18:55 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" } 00:00:09 v #4987 ! 22:18:55 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml" 00:00:09 v #4988 ! 22:18:55 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" } 00:00:09 v #4989 ! 22:18:55 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css" 00:00:09 v #4990 ! 22:18:55 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>" 00:00:09 d #4991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; result = 5512 } 00:00:09 i #4992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf } 00:00:09 v #4993 > 327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a 00:00:09 d #4994 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; result = 4375 } 00:00:09 i #4995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html } 00:00:09 d #4996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; result = 10082 } 00:00:09 i #4997 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub } 00:00:09 d #4998 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; result = 5448 } 00:00:09 i #4999 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf } 00:00:09 d #5000 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; result = 6051 } 00:00:09 i #5001 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html } 00:00:09 d #5002 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; result = 10055 } 00:00:09 i #5003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md } 00:00:09 d #5004 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; result = 102 } 00:00:09 d #5005 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #5006 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub } 00:00:09 d #5008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; result = 5841 } 00:00:09 i #5009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf } 00:00:09 d #5010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; result = 5372 } 00:00:09 i #5011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html } 00:00:09 d #5012 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; result = 10873 } 00:00:09 i #5013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub } 00:00:09 d #5014 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; result = 5684 } 00:00:09 i #5015 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf } 00:00:09 d #5016 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; result = 11733 } 00:00:09 i #5017 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html } 00:00:09 d #5018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; result = 10685 } 00:00:09 i #5019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md } 00:00:09 d #5020 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; result = 791 } 00:00:09 d #5021 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #5022 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5023 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub } 00:00:09 d #5024 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; result = 72062 } 00:00:09 i #5025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf } 00:00:09 d #5026 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; result = 98482 } 00:00:09 i #5027 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html } 00:00:09 v #5028 > 'dbd21ab4ac717628529cc164cd4fb958c4034b9e' 00:00:09 d #5029 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; result = 321854 } 00:00:09 i #5030 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub } 00:00:09 d #5031 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.md.epub; result = 64504 } 00:00:09 i #5032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf } 00:00:09 d #5033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; result = 256055 } 00:00:09 i #5034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html } 00:00:09 d #5035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.md.html; result = 226791 } 00:00:09 i #5036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md } 00:00:09 d #5037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; result = 270097 } 00:00:09 v #5038 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #5039 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #5040 > '4bf711ead74e2dd67aa74d62261c165a741a2013' 00:00:09 v #5041 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #5042 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #5043 > 'f6484cd8dfbe67b79ff014884bc0814b04524d8f' 00:00:09 v #5044 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #5045 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #5046 ! 22:18:55 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub 00:00:09 v #5047 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3272 } 00:00:09 w #5048 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub; result = CROWBOOK 0.17.0 22:18:55 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 22:18:55 [DEBUG] (1) crowbook::book: Attempting to generate epub... 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 22:18:55 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 22:18:55 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css" 22:18:55 [DEBUG] (1) epub_builder::epub: render_opf... 22:18:55 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml" 22:18:55 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" } 22:18:55 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml" 22:18:55 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" } 22:18:55 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css" 22:18:55 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>" 22:18:55 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub } 00:00:09 v #5049 > dbd21ab4ac717628529cc164cd4fb958c4034b9e 00:00:09 v #5050 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub } 00:00:09 d #5052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; result = 53889 } 00:00:09 i #5053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf } 00:00:09 d #5054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; result = 69457 } 00:00:09 i #5055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html } 00:00:09 d #5056 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; result = 241674 } 00:00:09 i #5057 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub } 00:00:09 d #5058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.md.epub; result = 47893 } 00:00:09 i #5059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf } 00:00:09 d #5060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; result = 183036 } 00:00:09 i #5061 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html } 00:00:09 d #5062 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.md.html; result = 167600 } 00:00:09 i #5063 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md } 00:00:09 d #5064 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; result = 198404 } 00:00:09 v #5065 > 4bf711ead74e2dd67aa74d62261c165a741a2013 00:00:09 v #5066 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub } 00:00:09 v #5068 > f6484cd8dfbe67b79ff014884bc0814b04524d8f 00:00:09 d #5069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; result = 7132 } 00:00:09 i #5070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf } 00:00:09 d #5071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; result = 5418 } 00:00:09 i #5072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html } 00:00:09 d #5073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; result = 16279 } 00:00:09 i #5074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub } 00:00:09 d #5075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; result = 6643 } 00:00:09 i #5076 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf } 00:00:09 d #5077 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; result = 12255 } 00:00:09 i #5078 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html } 00:00:09 d #5079 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; result = 13685 } 00:00:09 i #5080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md } 00:00:09 d #5081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; result = 5704 } 00:00:09 v #5082 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub } 00:00:09 d #5084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; result = 5743 } 00:00:09 i #5085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf } 00:00:09 d #5086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; result = 5098 } 00:00:09 i #5087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html } 00:00:09 d #5088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; result = 11790 } 00:00:09 i #5089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub } 00:00:09 d #5090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; result = 5604 } 00:00:09 i #5091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf } 00:00:09 d #5092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; result = 7847 } 00:00:09 i #5093 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html } 00:00:09 d #5094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; result = 11467 } 00:00:09 i #5095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md } 00:00:09 d #5096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; result = 1180 } 00:00:13 v #5097 ! 22:18:58 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges 00:00:13 v #5098 ! xelatex: major issue: So far, you have not checked for MiKTeX updates. 00:00:13 v #5099 ! 00:00:13 v #5100 ! ERROR Error during temporary files editing: xelatex didn't return succesfully 00:00:13 v #5101 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 } 00:00:13 w #5102 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf; result = CROWBOOK 0.17.0 22:18:54 [DEBUG] (1) crowbook::book: Ignoring YAML block: 22:18:54 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 22:18:54 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 22:18:58 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges xelatex: major issue: So far, you have not checked for MiKTeX updates. ERROR Error during temporary files editing: xelatex didn't return succesfully } 00:00:13 v #5103 ! 22:18:59 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges 00:00:13 v #5104 ! xelatex: major issue: So far, you have not checked for MiKTeX updates. 00:00:13 v #5105 ! 00:00:13 v #5106 ! ERROR Error during temporary files editing: xelatex didn't return succesfully 00:00:13 v #5107 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 } 00:00:13 w #5108 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf; result = CROWBOOK 0.17.0 22:18:55 [DEBUG] (1) crowbook::book: Ignoring YAML block: 22:18:55 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 22:18:55 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 22:18:59 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges xelatex: major issue: So far, you have not checked for MiKTeX updates. ERROR Error during temporary files editing: xelatex didn't return succesfully } 00:00:17 v #5109 ! 22:19:02 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf 00:00:17 v #5110 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 542 } 00:00:17 w #5111 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf; result = CROWBOOK 0.17.0 22:18:48 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 22:18:48 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 22:18:48 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 22:19:02 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf } 00:00:17 i #5112 documents.main / { result_len = 252 }